多个计数一个请求?

时间:2012-11-08 02:29:14

标签: mongodb count database

我有什么方法可以在一个请求中返回多个计数吗?

而不是运行users.find({gender:"male"}).count();并获得231,然后运行users.find({gender:"female"}).count();获取416可能返回{male:"231",female:"416"}的内容。我知道map reduce可以做到这一点,这是我最好的选择吗?

2 个答案:

答案 0 :(得分:2)

Aggregation框架中的

Groupby可以解决问题

 db.users.aggregate({$group:{_id:'$gender',count:{$sum:1}}}) 

答案 1 :(得分:0)

RameshVel是对的。 $group命令可能就是你要找的。

例如,以下查询:

db.people.aggregate({$group: {_id: '$gender', total: { $sum : 1 }}})

将产生以下结果:

{
  "result": [
    {
      "_id": "m",
      "total": 49988
    },
    {
      "_id": "f",
      "total": 50012
    }
  ],
  "ok": 1
}

您可以在此处阅读有关MongoDB聚合框架的更多信息: http://docs.mongodb.org/manual/applications/aggregation/

希望有所帮助。