[
{
"Name":"AAA",
"OppTag":[
{
"TagValue":"2016Known",
"TagID":19
},
{
"TagValue":"QQ",
"TagID":22
},
{
"TagValue":"WWW",
"TagID":21
},
]
},
{
"Name":"BBB",
"OppTag":[
{
"TagValue":"WWW",
"TagID":21
},
{
"TagValue":"QQ",
"TagID":22
}
]
}
]
以上响应如何使用聚合查询按标记名进行分组。内部数组中存在的标记名称。如何使用$ group内部数组...请给出一些解决方案。
答案 0 :(得分:1)
假设集合名称是标记,您应该执行以下表单的聚合查询
db.tag.aggregate([
{$unwind: '$OppTag'},
{$group: { _id: '$OppTag.TagValue', count: {$sum: 1}}},
{$project: {'_id':0, TagValue: '$_id',count: '$count'}}
])
当您应用上述查询时,您将收到如下所示的回复:
{ "count" : 2, "TagValue" : "WWW" }
{ "count" : 2, "TagValue" : "QQ" }
{ "count" : 1, "TagValue" : "2016Known" }