Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB |基于多个属性查询对象数组_Mongodb - Fatal编程技术网

MongoDB |基于多个属性查询对象数组

MongoDB |基于多个属性查询对象数组,mongodb,Mongodb,如果这是我的数据: { 店主:“约翰”, 宠物:[ { 名字:“奥斯卡”, 年龄:7岁, 类型:“狗” },{ 名字:“奥斯卡II”, 年龄:3岁, 类型:“狗” } ] },{ 店主:“莎莉”, 宠物:[ { 名称:'点', 年龄:7岁, 类型:“猫” },{ 名字:“狗先生”, 年龄:3岁, 类型:“狗” } ] } 我如何建立一个查询,以获得每一个拥有一只7岁的狗的主人 我试过: owner.findOne({ “宠物。年龄”:7岁, “pets.type”:“dog” }); 但这会

如果这是我的数据:

{
店主:“约翰”,
宠物:[
{
名字:“奥斯卡”,
年龄:7岁,
类型:“狗”
},{
名字:“奥斯卡II”,
年龄:3岁,
类型:“狗”
}
]
},{
店主:“莎莉”,
宠物:[
{
名称:'点',
年龄:7岁,
类型:“猫”
},{
名字:“狗先生”,
年龄:3岁,
类型:“狗”
}
]
}
我如何建立一个查询,以获得每一个拥有一只7岁的狗的主人

我试过:

owner.findOne({
“宠物。年龄”:7岁,
“pets.type”:“dog”
});

但这会让每一个拥有7岁宠物或某种狗的主人得到回报。对于上面的数据,它同时返回Sally和John。如何获取John?

使用$elemMatch指定同一元素的所有约束:

Owners.findOne({
  'pets': {
      '$elemMatch' : {
          'age': 7,
          'type': 'dog'
       }
   }
});