Mongodb:在嵌入的文档中搜索

时间:2014-08-21 11:43:55

标签: mongodb nosql

我找到"所有" names = y。

{
    "_id" : 1000013,
    "array" : [
        {
            "name" : "x"
        },
        {
            "name" : "y"
        },
        {
            "name" : "y"
        }
    ]
}

我尝试了这个解决方案:

db.users.find({' array.name':' y'})

但它返回完整数组中的所有值

und

db.users.find( { 
        'array.name': 'y'
         },{
        array: { $elemMatch: { name: 'y' } }
        } )

并且此解决方案仅返回一个值,因为$ elemMatch-它只返回第一个值为macht。我需要下一个输出:

{
    "_id" : 1000013,
    "array" : [
        {
            "name" : "y"
        },
        {
            "name" : "y"
        }
    ]
}

有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

db.users.aggregate([{
    $match:{"array.name": "y"}
},{
    $unwind:"$array"
},{
    $match:{"array.name": "y"}
},{
    $group:{_id:"$_id", array:{$push:"$array"}}
}]);