如何使用mongoose聚合查询在innner数组中使用$ group

时间:2015-12-01 04:04:16

标签: node.js mongodb mongoose

    [

    {
        "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内部数组...请给出一些解决方案。

1 个答案:

答案 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" }