在“友谊”系列中,我想找到所有Bart的朋友,他们是10. $ elemMatch查询只返回数组的第一个匹配元素:我只得到Milhouse。我怎样才能得到米尔豪斯和马丁?
{ name:'Bart',
age:10
friends:[
{ name:'Milhouse',
age:10
},
{ name:'Nelson',
age:11
},
{ name:'Martin',
age:10
}
]
},
{ name:'Lisa',
age:8
friends:[
...
]
}
答案 0 :(得分:1)
尝试使用aggregation framework执行此任务(尤其是$unwind运算符):
db.friendship.aggregate([
{ $match: { name: "Bart" } },
{ $unwind: "$friends" },
{ $match: { "friends.age": 10 } }
]);