【问题标题】:How to filter from array in a mongo document如何从 mongo 文档中的数组中过滤
【发布时间】:2022-07-06 23:22:52
【问题描述】:

我在 mongoDB 中有一个集合,其中包含以下文档:

{
    "_id" : ObjectId("some_id"),
    "name" : "name",
    "field1" : 123,
    "field2" : 234,
    "arr" : [ 
        {
            
            "a_num" : 3,
            "arr" : [ 
                "abc", 
                "def"
            ],
        }, 
        {
            
            "a_num" : 36,
            "arr" : [ 
                "hi"
            ],
        }, 
        {
            
            "a_num" : 34,
            "arr" : [ 
                "abc"
            ],
        }
    ]
}

当我使用find() 我不想获得arr 只有1 个元素的arr 元素,它的值为"abc"。 例如,对于上述文件,我想得到:

{
    "_id" : ObjectId("some_id"),
    "name" : "name",
    "field1" : 123,
    "field2" : 234,
    "arr" : [ 
        {
            
            "a_num" : 3,
            "arr" : [ 
                "abc", 
                "def"
            ],
        }, 
        {
            
            "a_num" : 36,
            "arr" : [ 
                "hi"
            ],
        }, 
    ]
}

知道怎么做吗? 谢谢!

【问题讨论】:

    标签: arrays mongodb find


    【解决方案1】:

    您需要将聚合框架与$filter 一起使用,如下所示:

    db.collection.aggregate([
      {
        $addFields: {
          arr: {
            $filter: {
              input: "$arr",
              cond: {
                $ne: [
                  "$$this.arr",
                  [
                    "abc"
                  ]
                ]
              }
            }
          }
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 2021-12-12
      • 2020-04-19
      • 2018-01-07
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多