MongoDB中的分组求和

6

这是我的旧的MySQL查询。

SELECT Count(`status`) as amt, `status` 
FROM (`users`) 
GROUP BY `status`

这将返回类似以下内容:

+---------+----------+
| amt     | status   |
+---------+----------+
| 3       |        0 |
| 210     |        1 |
| 330     |        2 |
| 4233    |        3 | 
| 540085  |        4 |
+---------+----------+

这似乎是最基本的Mongo查询,但经过多次尝试使用$group,然后被告知使用$aggregate,我仍然没有成功。

db.users.aggregate([ { 
    $group: { 
        _id: "$status", 
        amt: { $status: 1 }
    } 
} ] )

我以为选择状态字段时这样做可以生效,但由于我包括了 $ 符号,它只会通过 `amt: {$status:1}` 统计这些分组查询的数量。

但是我的响应结果仅为:

{ "result" : [ ], "ok" : 1 }

所以它半成功了?但没有返回任何内容。我认为这就是_id部分的作用。

我在跟随这个示例: http://docs.mongodb.org/manual/reference/aggregation/group/

1个回答

23

你已经接近了答案,但需要使用$sum运算符对分组进行计数:

db.users.aggregate([ { 
    $group: { 
        _id: "$status", 
        amt: { $sum: 1 }
    } 
} ] )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接