如果这是我的数据:
{
owner: 'John',
pets:[
{
name: 'Oscar',
age: 7,
type: 'dog'
},{
name: 'Oscar II',
age: 3,
type: 'dog'
}
]
},{
owner: 'Sally',
pets:[
{
name: 'Spot',
age: 7,
type: 'cat'
},{
name: 'Mister Dog',
age: 3,
type: 'dog'
}
]
}
如何构建查询以获得每只拥有7只狗的所有者。
我试过了:
Owners.findOne({
'pets.age': 7,
'pets.type': 'dog'
});
但这会让每个拥有7岁或宠物的宠物的主人归还。在上述数据的情况下,它返回Sally&约翰。我怎么才能得到约翰?
答案 0 :(得分:1)
使用 $ elemMatch 指定同一元素的所有约束:
Owners.findOne({
'pets': {
'$elemMatch' : {
'age': 7,
'type': 'dog'
}
}
});