我有一个mongo文档,如下所示
{
"_id" : ObjectId("588adde40fcbbbc341b34e1c"),
"title" : "Fifa world cup",
"tags" : [
{
"name" : "Football",
"type" : "Sports"
},
{
"name" : "World cup",
"type" : "Sports"
},
{
"name" : "Fifa",
"type" : "Manager"
}
]
}
我编写了以下查询以获取所有类型为Sports
的标记,但我只获得1项而不是2
db.collection.find(
{
tags:
{
$elemMatch:
{
type: "Sports"
}
}
},
{
"tags.$" : 1
})
是否可以获得所有匹配的项目?我在这里缺少什么?
答案 0 :(得分:2)
您可以使用聚合:
db.collection.aggregate([
{
$unwind : "$tags"
},
{
$match : {
"tags.type" : "Sports"
}
},
{
$group : {
_id : "$_id",
tags : {$addToSet : "$tags"}
}
}
])