MongoDB查询数组的内部元素

时间:2019-08-28 12:18:47

标签: arrays mongodb

我的搜索结果以以下格式存储在Mongo集合中。这是一个文件。

{
 "result": [
    {
      "provider_id": 1,
      "code" :1,
      "comm_id" : 1 
        },

    {
      "provider_id": 1,
      "code" :2,
      "comm_id" : 2 
        },
    {
      "provider_id": 2,
      "code" :"A",
      "comm_id" : 1 
        },

    {
      "provider_id": 1,
      "code" :"B",
      "comm_id" : 3 
        }
     ]
}

如何编写查询并应用类似{“ result.comm_id”:1}的过滤器,以使结果集具有

 {
"result":[
    {
      "provider_id": 1,
      "code" :1,
      "comm_id" : 1 
        },

    {
      "provider_id": 2,
      "code" :"A",
      "comm_id" : 1 
        }

     ]
     }   

1 个答案:

答案 0 :(得分:2)

使用$ filter如下使用聚合管道

db.collection.aggregate([
  {
    $project: {
      result: {
        $filter: {
          input: "$result",
          as: "item",
          cond: {
            $eq: [
              "$$item.comm_id",
              1
            ]
          }
        }
      }
    }
  }
])