MongoDB:如何在不使用$ group运算符的情况下计算总计数

时间:2014-02-19 11:56:00

标签: mongodb aggregation-framework

我有以下结果:

"result" : [ 
    {
        "_id" : "London",
        "count" : 499
    }, 
    {
        "_id" : "Paris",
        "count" : 135
    }, 
    {
        "_id" : "Lviv",
        "count" : 95
    }
]

这是查询:

 {"$group":{
        _id: "$city",
        "count" : {"$sum":1}
    }
 }

所以,我想要一些如何计算不仅分组的所有字段。我认为最好显示预期结果:

"result" : [ 
    {
        "_id" : "London",
        "count" : 499,
        "total" : 729
    }, 
    {
        "_id" : "Paris",
        "count" : 135,
        "total" : 729
    }, 
    {
        "_id" : "Lviv",
        "count" : 95,
        "total" : 729
    }
]

预期结果具有“总计”字段,其被计算为“计数”字段的量(499 + 135 + 95 = 729)。  已编辑:我必须只使用聚合框架!

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

您必须先计算总数:

db.coll.count( ..., function( err, total ) {

然后在聚合命令中使用该结果:

{
    "$group": {
        _id: "$city",
        count: { "$sum": 1 },
        total: total
}

修改

如果您只想使用聚合框架,请尝试使用此代替db.coll.count()

{
    "$group": {
        _id: 1,
        count: { "$sum": 1 }
    }
}

答案 1 :(得分:0)

db.collection.count()之类的声音实际上可以为您提供结果。这是因为你实际上只是总结那里的所有文件。