基于非数组字段在mongo文档中投影数组值

苏丹瓦

我的数据库中的数据如下:

/* 1 */
{
      "name": "Severus",
      "u_name": "severussnape",
      "info": [
        {
          "value": "Severus",
          "source": "1",
          "infotag": "name"
        },
        {
          "value": "severussnape",
          "source": "2",
          "infotag": "name"
        }
      ]
}

/* 2 */
{
      "name": "Harry",
      "u_name": null,
      "info": [
        {
        "value": "Harry",
          "source": "1",
          "infotag": "name"
        }
      ]
}

我想投影数据,以便根据name字段info是否u_name为空来更改结果中字段和数组我期望的结果是这样的:

/* 1 */
{
      "name": "severussnape",
      "info": [
        {
          "value": "severussnape",
          "source": "2",
          "infotag": "name"
        }
      ]
}

/* 2 */
{
      "name": "Harry",      
      "info": [
        {
          "value": "Harry",
          "source": "1",
          "infotag": "name"
        }
      ]
}

我已经成功地使用投影正确地投影了名称字段:

db.database.aggregate([{
    $project:{
        "name":{$cond:[{$eq:["$u_name",null]},"$name","$u_name"]}
    }
}])

但是我一直无法弄清楚如何从info第一个文档中的值“Severus”中删除数组元素,具体取决于u_name. 这可能吗?

维卡什·辛格

您应该尝试此聚合查询,这将解决您的问题。

db.database.aggregate([
    {
        $project:{
            'name': {
                '$ifNull': ['$u_name', '$name']
            },
            'info': '$info'
        }
    },
    {
        $project: {
            'name': '$name',
            'info': {
                '$filter': {
                    'input': '$info',
                    'as': 'info',
                    'cond': {
                        '$eq':['$$info.value', '$name']
                    }
                }
            }
        }
    }
])

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从数组中的文档投影特定字段?

来自分类Dev

动态mongo投影-使用文档中的字段确定投影的投影

来自分类Dev

仅返回投影数组子文档中的特定字段

来自分类Dev

如何基于Mongo文档数组中的最大日期获取记录

来自分类Dev

如何在Mongo聚合中合并文档中的数组字段

来自分类Dev

如何在Mongo DB中合并数组和文档字段

来自分类Dev

MongoDB聚合:将单独的文档字段投影到单个数组字段中

来自分类Dev

MongoDB聚合:将单独的文档字段投影到单个数组字段中

来自分类Dev

在Mongo中按嵌套数组中的文档值排序

来自分类Dev

检查mongo文档数组中是否存在值

来自分类Dev

Mongo按数组中的值对文档进行排序

来自分类Dev

如何获取嵌入到数组中的特定文档的某些字段的投影?

来自分类Dev

在mongo文档中找到数组中的最后一项,并检查其字段是否为某个值

来自分类Dev

在mongo文档中找到数组中的最后一项,并检查其字段是否为某个值

来自分类Dev

如何在mongo shell查询中仅投影嵌套数组的匹配字段

来自分类Dev

将字段不包含数组中的值的文档匹配

来自分类Dev

如何从文档中的当前字段获取数组值?

来自分类Dev

猫鼬:通过数组字段中的值查找文档

来自分类Dev

在mongo中查找数组字段的最大值

来自分类Dev

在mongo的文档中搜索数组中的数据

来自分类Dev

查找等于非数组字段的任何数组元素查询的文档

来自分类Dev

如何在mongo中更新文档子数组中的字段

来自分类Dev

Mongo文档到数组

来自分类Dev

将文档字段从 Scala 中的 Mongo DB 收集到数组

来自分类Dev

mongo聚合-一个数组中的字段也位于另一个数组中的文档数

来自分类Dev

在文本字段中基于特定数组键作为用户类型显示数组值

来自分类Dev

基于值折叠子文档的投影

来自分类Dev

如何基于非数组的对象查询 mongo 查找/聚合

来自分类Dev

MongoDB:汇总子文档数组中的字段

Related 相关文章

  1. 1

    如何从数组中的文档投影特定字段?

  2. 2

    动态mongo投影-使用文档中的字段确定投影的投影

  3. 3

    仅返回投影数组子文档中的特定字段

  4. 4

    如何基于Mongo文档数组中的最大日期获取记录

  5. 5

    如何在Mongo聚合中合并文档中的数组字段

  6. 6

    如何在Mongo DB中合并数组和文档字段

  7. 7

    MongoDB聚合:将单独的文档字段投影到单个数组字段中

  8. 8

    MongoDB聚合:将单独的文档字段投影到单个数组字段中

  9. 9

    在Mongo中按嵌套数组中的文档值排序

  10. 10

    检查mongo文档数组中是否存在值

  11. 11

    Mongo按数组中的值对文档进行排序

  12. 12

    如何获取嵌入到数组中的特定文档的某些字段的投影?

  13. 13

    在mongo文档中找到数组中的最后一项,并检查其字段是否为某个值

  14. 14

    在mongo文档中找到数组中的最后一项,并检查其字段是否为某个值

  15. 15

    如何在mongo shell查询中仅投影嵌套数组的匹配字段

  16. 16

    将字段不包含数组中的值的文档匹配

  17. 17

    如何从文档中的当前字段获取数组值?

  18. 18

    猫鼬:通过数组字段中的值查找文档

  19. 19

    在mongo中查找数组字段的最大值

  20. 20

    在mongo的文档中搜索数组中的数据

  21. 21

    查找等于非数组字段的任何数组元素查询的文档

  22. 22

    如何在mongo中更新文档子数组中的字段

  23. 23

    Mongo文档到数组

  24. 24

    将文档字段从 Scala 中的 Mongo DB 收集到数组

  25. 25

    mongo聚合-一个数组中的字段也位于另一个数组中的文档数

  26. 26

    在文本字段中基于特定数组键作为用户类型显示数组值

  27. 27

    基于值折叠子文档的投影

  28. 28

    如何基于非数组的对象查询 mongo 查找/聚合

  29. 29

    MongoDB:汇总子文档数组中的字段

热门标签

归档