我正在尝试使用MongoDB,试图弄清楚如何做一个简单的
SELECT province, COUNT(*) FROM contest GROUP BY province
但是我似乎不能使用聚合函数来解决这个问题。我可以使用一些非常奇怪的组语法来实现
db.user.group({
"key": {
"province": true
},
"initial": {
"count": 0
},
"reduce": function(obj, prev) {
if (true != null) if (true instanceof Array) prev.count += true.length;
else prev.count++;
}
});
但是有没有一种使用聚合函数的更简单/更快的方法呢?
发布于 2014-04-17 01:39:11
这将是使用aggregate
更简单的方法
db.contest.aggregate([
{"$group" : {_id:"$province", count:{$sum:1}}}
])
发布于 2015-07-02 23:58:47
如果需要多个列作为分组依据,请遵循此模型。在这里,我通过status
和type
进行计数
db.BusinessProcess.aggregate({
"$group": {
_id: {
status: "$status",
type: "$type"
},
count: {
$sum: 1
}
}
})
发布于 2018-01-12 01:09:05
此外,如果需要限制分组,可以使用:
db.events.aggregate(
{$match: {province: "ON"}},
{$group: {_id: "$date", number: {$sum: 1}}}
)
https://stackoverflow.com/questions/23116330
复制相似问题