2013-07-28 56 views
2

这是我的旧MySQL查询。按总和mongodb

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

这将返回类似

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

这似乎是最基本的蒙戈的查询过,但使用$group多次尝试后,再告知使用$aggregate我仍然没有运气。

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

我想这会工作作为选择状态字段,但因为我包含在$,它只能算作通过`AMT的那些已分组的查询量:{$状态:1}

但我的回复只是

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

所以半工作?但没有返回任何东西。我认为这就是_id的一部分。

我下面这个例子:http://docs.mongodb.org/manual/reference/aggregation/group/

回答

8

你接近,但你需要使用$sum运营商来算分组:

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

科特迪瓦哦 - 感谢:P –