如何在mongodb中排除嵌套的投影数组元素

时间:2016-01-01 03:15:40

标签: mongodb mongodb-query

这是我的收藏结构。

{
 "_id" : ObjectId("5685ea32ba5298688d27cceb"),
 "name" : "t1",
 "array" : [ 
     {
         "name" : "n1",
         "innerArray1" : [ 
             {
                 "id" : 1,
                 "name" : "aaa"
             }, 
             {
                 "id" : 2,
                 "name" : "bbb"
             }
         ],
         "innerArray2" : [ 
             {
                 "id" : 1,
                 "name" : "cccc",
                 "active" : true
             }, 
             {
                 "id" : 2,
                 "name" : "dddd",
                 "active" : false
             }
         ]
     }
 ]}
在find()之后

。我想只得到innerArray2。我试过这个

db.getCollection('Test').find({"name":"t1","array.name":"n1"},{"array.$":1})

{
"_id" : ObjectId("5685ea32ba5298688d27cceb"),
"array" : [ 
    {
        "name" : "n1",
        "innerArray1" : [ 
            {
                "id" : 1,
                "name" : "aaa"
            }, 
            {
                "id" : 2,
                "name" : "bbb"
            }
        ],
        "innerArray2" : [ 
            {
                "id" : 1,
                "name" : "cccc",
                "active" : true
            }, 
            {
                "id" : 2,
                "name" : "dddd",
                "active" : false
            }
        ]
    }
]

}

但实际上我想从结果中删除innerArray1元素。这是我的期望。

{
"_id" : ObjectId("5685ea32ba5298688d27cceb"),
"array" : [ 
    {
        "name" : "n1",
        "innerArray2" : [ 
            {
                "id" : 1,
                "name" : "cccc",
                "active" : true
            }, 
            {
                "id" : 2,
                "name" : "dddd",
                "active" : false
            }
        ]
    }
]}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用db.getCollection('Test').find()而不是db.getCollection('Test').findOne('innerArray2')