1

在集合“friendship”中,我想查找 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:[
       ...
    ]
}
4

1 回答 1

1

尝试为此任务使用聚合框架(尤其是$unwind运算符):

db.friendship.aggregate([
    { $match: { name: "Bart" } },
    { $unwind: "$friends" },
    { $match: { "friends.age": 10 } }
]);
于 2013-10-27T22:34:19.560 回答