我有一个集合中的文档,如:
// Document One
{
"_id" : ObjectId("556411af7361123456"),
"owner_name": "emma",
"animal_weight" : [
{
"pet" : dog,
"weight" : 112
},
{
"pet" : cat,
"weight" : 30
}
]
}
{
"_id" : ObjectId("556411af736112345678910"),
"owner_name": "jenny",
"animal_weight" : [
{
"pet" : dog,
"weight" : 100
},
{
"pet" : animal,
"weight" : 25
}
]
}
我希望mongodb返回其狗的体重超过110的所有者(owner_name)的名称。查询应该是什么样的?基本上,数组'animal_weight'中有两个元素,每个元素(哈希)包括两个键值对(一个是宠物类型,狗或猫;另一个是宠物的重量)。如何在mongo查询中应用过滤器对狗的体重?谢谢!
答案 0 :(得分:0)
您可以使用$ elemMatch运算符进行查询:
$ elemMatch运算符匹配包含数组字段的文档,其中至少有一个元素符合所有指定的查询条件。
查询可能类似于:
db.pets.find({ "animal_weight": { $elemMatch: { pet: "dog", weight: {$gt: 110} } } }, {_id:0, owner_name:1})