【mongodb学习教程】学习aggregate聚合函数

aggregate 是mongo中用于聚合计算的函数

aggregate支持的表达式

表达式格式用途
$sum求总和
$min求最小值文档
$max求最大值文档
$avg求平均值
$last获取最后一个文档
$push插入到数组
$first获取第一个文档
$addToSet插入数组

下面我们来看DEMO

假设mongo集合 records 数据:

{ “_id” : ObjectId(“5d9756c2838e32975ac4b0fc”), “type” : “sign”, “score” : 10 }
{ “_id” : ObjectId(“5d9756c9838e32975ac4b0fd”), “type” : “sign”, “score” : 10 }
{ “_id” : ObjectId(“5d9756d2838e32975ac4b0fe”), “type” : “sign”, “score” : 10 }
{ “_id” : ObjectId(“5d9810762abb7e25eee0fd86”), “type” : “login”, “score” : 2 }
{ “_id” : ObjectId(“5d98419d838e32975ac4b0ff”), “type” : “login”, “score” : 10 }

我们来计算某个字段的总值

1
2
3
4
5
6
7
8
9
10
await Record.aggregate([{
$match: {
type: 'sign'
}
}, {
$group: {
_id: null,
score: { $sum: '$score'}
}
}]);

以上是计算 所有类型为 ‘sign’ 的文档的score 之和

$match 是匹配筛选

$group 是分组计算

计算每个类型各自的score总和

1
2
3
4
5
6
await Record.aggregate([{
$group: {
_id: '$type',
score: { $sum: '$score'}
}
}]);

这个是计算每个类型各自的score总和,
{ type: ‘sign’, score: 30 }
{ type: ‘login’, score: 12 }

上面 _id: ‘$type’ 表示以type为唯一id

未完待续

坚持原创技术分享,您的支持将鼓励我继续创作!