gpt4 book ai didi

mongodb - 如何按字段计数汇总集合和分组

转载 作者:可可西里 更新时间:2023-11-01 10:43:29 26 4
gpt4 key购买 nike

我有一组看起来像这样的用户:

{
"_id": ObjectId("54380a817a4b612a38e87613"),
"email": "email@email.com",
"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 分钟。 “聚合”功能会有助于加快此查询吗?如果是这样我会怎么做?

最佳答案

应该这样做:

db.myCollection.aggregate([
{"$group": {_id: "$geo.country", count:{$sum:1}}}
])

关于mongodb - 如何按字段计数汇总集合和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com