在 MongoDB 中,aggregate 的 group 用于按指定的表达式对文档进行分组,如果我们要对分组后的文档进行求平均值,我们可以使用 avg 关键字。
db_name.collection_name.aggregate([ { '$group': {'_id': '$name', 'minPayment_avg': {'$avg': '$minPayment'}} } ])
名称 | 描述 |
---|---|
db_name | 数据库名 |
collection_name | 表名 |
_id | 分组的标志,这里将 name 相同的分为一组 |
minPayment_avg | 自定义字段 |
minPayment | 表示对 minPayment 求平均值 |
这里将 name 相同的数据分为一组,并求平均值。
我们首先,使用 mongo 命令,连接上数据库,具体命令如下:
mongo
如下图所示:
现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:
use haicoder
现在,我们使用 insert 插入四条记录,具体命令如下:
db.haicoder.insert([ {id:1, "url" : "haicoder.net/c", "score" : 100 }, {id:1, "url" : "haicoder.net/cpp", "score" : 90 }, {id:2, "url" : "haicoder.net/golang", "score" : 80 }, {id:2, "url" : "haicoder.net/java", "score" : 60 } ]);
执行完毕后,此时,如下图所示:
我们看到,此时提示我们成功插入了多条记录,现在,我们使用 aggregate group,进行聚合查询求平均值,具体命令如下:
db.haicoder.aggregate([ { '$group': {'_id': '$id', 'avg_score': {'$avg': '$score'}} } ]);
执行完毕后,此时,如下图所示:
我们看到,此时返回了相同的 id 的记录的平均值,现在,我们再次查询平均值,具体命令如下:
db.haicoder.aggregate([ { '$match': {'id': {$gt:1}} }, { '$group': {'_id': '$id', 'avg_score': {'$avg': '$score'}} } ]);
执行完毕后,此时,如下图所示:
我们看到,此时我们求出了 id 大于 1 的记录的平均值。
在 MongoDB 中,aggregate 的 group 用于按指定的表达式对文档进行分组,如果我们要对分组后的文档进行求平均值,我们可以使用 avg 关键字。