Mongodb计数数组组合

时间:2014-11-13 13:54:38

标签: mongodb mongodb-query aggregation-framework

我有这种文件

[
{
    ....
    tags : ["A","B"]
},
{
    ....
    tags : ["A","B"]
},
{
    ....
    tags : ["J","K"]
},
{
    ....
    tags : ["A","B","C"]
}
]

使用Aggregation Framwork我想按数组组合分组,以便得到类似的内容:

[
    {
        _id:["A","B"],
        count : 2
    },
    {
        _id:["J","K"],
        count : 1
    },
    {
        _id:["A","B","C"],
        count : 1
    },
]

有可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

不确定为什么你甚至认为这不会起作用:

db.collection.aggregate([
    { "$group": {
        "_id": "$tags",
        "count": { "$sum": 1 }
    }}
])

返回:

{ "_id" : [ "A", "B", "C" ], "count" : 1 }
{ "_id" : [ "J", "K" ], "count" : 1 }
{ "_id" : [ "A", "B" ], "count" : 2 }

MongoDB"不关心"你投入到"字段的价值"或"属性"。这适用于"分组键" $group运算符中的_id也是如此。一切都是"文件"因此是BSON值,因此是有效的。

一切正常。只要它是你想要的。