MongoDB对象数组查询

时间:2017-05-28 19:19:17

标签: arrays mongodb object

我有一个像这样的用户数据库:

{
"_id": 1,
"name": "Carlo",
"cars": [{
    "type": "sport",
    "score": 10
}, {
    "type": "hatchback",
    "score": 5
}, {
    "type": "family",
    "score": 4
}, {
    "type": "family",
    "score": 3
}]

}

如何选择掀背车得分超过6的所有用户? 因此,查询必须在汽车数组中找到一些具有属性'类型的对象。有价值的'两厢车'和'得分'超过6

1 个答案:

答案 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}。希望这会有所帮助。