5

这是我的旧 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/

4

1 回答 1

22

您很接近,但您需要使用$sum运算符来计算分组:

db.users.aggregate([ { 
    $group: { 
        _id: "$status", 
        amt: { $sum: 1 }
    } 
} ] )
于 2013-07-28T15:35:41.237 回答