2012-11-08 34 views
0

有什麼辦法讓我在一個請求中返回多個計數?多個計數一個請求?

而是然後運行users.find({gender:"male"}).count();並獲得231然後運行users.find({gender:"female"}).count();越來越416東西可以返回{male:"231",female:"416"}。我知道地圖縮小可以做到這一點,是我最好的選擇?

回答

2

Aggregation框架Groupby會做的伎倆

db.users.aggregate({$group:{_id:'$gender',count:{$sum: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/

希望這有助於。