如果将松散应用于猫鼬中使用聚合时不存在的字段会发生什么

西德斯·古格拉尼(Sidharth Guglani)

可以说我在猫鼬模式的字段上使用$ unwind
根据上面的链接如果不存在field,那么unwind会忽略输入文档。
如何防止这种情况,以便即使不使用field也不返回过程也不返回查询结果存在,即输入文档不被忽略

if a particular field exists   
  I want to do unwind and some more stuff (project and group) 
else
  I want input document no changes in this case  
西尔万·勒鲁

根据以上链接,如果不存在该字段,则展开将引发错误

不,它不会:

  • 如果由字段路径指定的字段中的值不是数组,则db.collection.aggregate()会生成错误
  • 如果您为输入文档中不存在的字段指定路径,则管道将忽略输入文档,并且不会输出该输入文档的文档。

这是一个简单的示例:

> db.test.insert({a:[1]})
> db.test.insert({})

> db.test.aggregate({$unwind:'$a'})
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
// no error -- but unwind only the document having the `a` field.

但:

> db.test.insert({a:2})
> db.test.aggregate({$unwind:'$a'})
// will result in error 15978:
// """Value at end of $unwind field path '$a' must be an Array,
//    but is a NumberDouble"""

根据您的修改,如果需要保留缺少字段的文档以展开,则可以$project使用$ifNull以下默认值

> db.test.find()
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : [ 1 ] }
{ "_id" : ObjectId("557362a57b97d77c38793c22") }

> db.test.aggregate([
    {$project: { a: { $ifNull: ['$a', [ null ]]}}},
    {$unwind: "$a"}
])
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
{ "_id" : ObjectId("557362a57b97d77c38793c22"), "a" : null }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬TypeScript聚合:类型'any []'不存在

来自分类Dev

使用列表推导将标签应用于列表中不存在标签的项目

来自分类Dev

猫鼬将项目推送到数组(如果不存在)

来自分类Dev

如果规则多次应用于表单,会发生什么情况

来自分类Dev

猫鼬-this.find()不存在

来自分类Dev

猫鼬更新了不存在的文档

来自分类Dev

将onclick事件应用于页面加载时不存在的元素

来自分类Dev

将onclick事件应用于页面加载时不存在的元素

来自分类Dev

将属性应用于python中的类方法时会发生什么情况?

来自分类Dev

如果我将“填充”(猫鼬)与空字符串一起使用,会发生什么情况?我想创建一个抽象函数来从猫鼬获取数据

来自分类Dev

应用于不存在的元素的 last-of-type

来自分类Dev

当按位 AND 应用于负数时会发生什么?

来自分类Dev

如果在Spring Webflow定义的动作状态内不存在匹配转换,会发生什么?

来自分类Dev

当模式中不存在字段时,在猫鼬中查找不返回任何内容

来自分类Dev

如果指定的字段不存在,cut返回什么?

来自分类Dev

将聚合函数应用于Postgres中的数组字段?

来自分类Dev

创建聚合(如果不存在)

来自分类Dev

如何在猫鼬中使用聚合

来自分类Dev

无法从nodejs的猫鼬中使用聚合

来自分类Dev

猫鼬:属性“拉”在类型“地址[]”上不存在

来自分类Dev

Elasticsearch-使用脚本创建字段(如果不存在)

来自分类Dev

处理器尝试访问不存在的物理地址时会发生什么?

来自分类Dev

当我释放Delphi中可能不存在的内存时会发生什么?

来自分类Dev

如何修复“图像“ pyimage10”不存在”错误,为什么会发生?

来自分类Dev

在Flash ActionScript中调用不存在的方法时会发生什么?

来自分类Dev

dmcrypt:不存在用户空间加密包装时会发生什么?

来自分类Dev

如果React Native中React Navigation库提供的堆栈导航器组件的initialRouteName属性不存在,会发生什么情况

来自分类Dev

如果文件不存在,readAllLines将返回什么?

来自分类Dev

猫鼬使用$ and将相同属性应用于两个过滤器

Related 相关文章

  1. 1

    猫鼬TypeScript聚合:类型'any []'不存在

  2. 2

    使用列表推导将标签应用于列表中不存在标签的项目

  3. 3

    猫鼬将项目推送到数组(如果不存在)

  4. 4

    如果规则多次应用于表单,会发生什么情况

  5. 5

    猫鼬-this.find()不存在

  6. 6

    猫鼬更新了不存在的文档

  7. 7

    将onclick事件应用于页面加载时不存在的元素

  8. 8

    将onclick事件应用于页面加载时不存在的元素

  9. 9

    将属性应用于python中的类方法时会发生什么情况?

  10. 10

    如果我将“填充”(猫鼬)与空字符串一起使用,会发生什么情况?我想创建一个抽象函数来从猫鼬获取数据

  11. 11

    应用于不存在的元素的 last-of-type

  12. 12

    当按位 AND 应用于负数时会发生什么?

  13. 13

    如果在Spring Webflow定义的动作状态内不存在匹配转换,会发生什么?

  14. 14

    当模式中不存在字段时,在猫鼬中查找不返回任何内容

  15. 15

    如果指定的字段不存在,cut返回什么?

  16. 16

    将聚合函数应用于Postgres中的数组字段?

  17. 17

    创建聚合(如果不存在)

  18. 18

    如何在猫鼬中使用聚合

  19. 19

    无法从nodejs的猫鼬中使用聚合

  20. 20

    猫鼬:属性“拉”在类型“地址[]”上不存在

  21. 21

    Elasticsearch-使用脚本创建字段(如果不存在)

  22. 22

    处理器尝试访问不存在的物理地址时会发生什么?

  23. 23

    当我释放Delphi中可能不存在的内存时会发生什么?

  24. 24

    如何修复“图像“ pyimage10”不存在”错误,为什么会发生?

  25. 25

    在Flash ActionScript中调用不存在的方法时会发生什么?

  26. 26

    dmcrypt:不存在用户空间加密包装时会发生什么?

  27. 27

    如果React Native中React Navigation库提供的堆栈导航器组件的initialRouteName属性不存在,会发生什么情况

  28. 28

    如果文件不存在,readAllLines将返回什么?

  29. 29

    猫鼬使用$ and将相同属性应用于两个过滤器

热门标签

归档