我找到"所有" 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"
}
]
}
有可能吗?
谢谢!
答案 0 :(得分:3)
db.users.aggregate([{
$match:{"array.name": "y"}
},{
$unwind:"$array"
},{
$match:{"array.name": "y"}
},{
$group:{_id:"$_id", array:{$push:"$array"}}
}]);