我有一个像这样的用户数据库:
{
"_id": 1,
"name": "Carlo",
"cars": [{
"type": "sport",
"score": 10
}, {
"type": "hatchback",
"score": 5
}, {
"type": "family",
"score": 4
}, {
"type": "family",
"score": 3
}]
}
如何选择掀背车得分超过6的所有用户? 因此,查询必须在汽车数组中找到一些具有属性'类型的对象。有价值的'两厢车'和'得分'超过6
答案 0 :(得分:1)
您好,您可以使用$elemMatch来执行此操作。这是一个工作样本
db.getCollection('users').find(
{"cars":
{$elemMatch:
{ "type": "hatchback","score": {$gte: 6}
}
}
}
)
正如您所看到的,$ elemMatch的语法是
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
这里你的数组字段是&#34; cars&#34;。 由于你需要匹配type = hatchback并且得分大于或等于6, 您的查询将是{&#34;键入&#34;:&#34;掀背&#34;,&#34;得分&#34;:{$ gte:6}。希望这会有所帮助。