2
彙總收集和I組有用戶的集合,它看起來是這樣的:我如何通過場數
{
"_id": ObjectId("54380a817a4b612a38e87613"),
"email": "[email protected]",
"ogp": [BIG NESTED COLLECTION... {}, {}, {}]
"created": ISODate("2012-02-28T23:10:07Z"),
"o_id": ObjectId("5438096f7a4b612a38e445f4")
"geo": {"country":"US", "city":"Seattle", "longitude": 123, "latitude":123}
}
我想按國家,總讓所有的用戶的位置,並將它們組合。事情是這樣的:
[ {country:"US",total:250,000}, {country:"GB",total:150,000}, ... ]
目前我只是抓住所有的文件和解析它在服務器上:
db.users.find({'geo.country': {$ne: null},'geo.city': {$ne: null}}, {'geo.country':1}, function(err, doc) {
var data;
doc = _.groupBy(doc, function(par) { return par.geo.country; });
data = [];
return _.each(doc, function(item, key, obj) {
return data.push([key, obj[key].length]);
});
});
的問題,這是有600,000+文件和查詢約需1分鐘執行。 「聚合」功能是否有助於加快查詢速度?如果是的話,我會怎麼做呢?