Mongdb Aggregate 聚合查询简单使用

博客围绕MongoDB聚合查询展开。作者因项目需求阅读官方文档解惑。介绍了聚合查询常用操作符,如匹配、分组统计等。强调使用时要根据数据量确定,因$group阶段有100MB内存限制,超量需开启allowDiskUse选项,还提及分组及操作符使用的相关要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目中遇到需要对查询出来的数据进行分组统计,用到了聚合查询,之前都是用代码进行统计。因为我以前一直有一个误区就是轻易不要实用聚合查询,因为当数据量超过一定程度,mongoose 就会保错,所以最近阅读了一下官方文档,解决我的疑惑。

Aggreagte

使用聚合查询之前,我们要搞清楚这里面的操作符都是干嘛的。
$macth 匹配数据,根据给定的条件,过滤掉不符合条件的数据。
$group 进行分组统计,相当于 SQL 中的 group 分组操作
$project 投影操作符,指定需要显示的字段
$sort 对聚合管道中的数据按照指定字段排序
$limit 限制返回的数量
$skip 跳过指定数量的文档,并返回剩下的文档
$unwind 按照指定的字段拆分文档
$addFiles 根据需要,添加新的字段

以上是一些常用的操作符,这里要注意的是再使用聚合查询时,要根据数据量的大小来确定使用,因为在文档中有这么一段话

The $group stage has a limit of 100 megabytes of RAM. By default, if the stage exceeds this limit, $group will produce an error. However, to allow for the handling of large datasets, set the allowDiskUse option to true to enable $group operations to write to temporary files. See db.collection.aggregate() method and the aggregate command for details.

翻译过来就是

$group 阶段内存限制是 100MB 大小的数据,如果超出此限制,将会产生错误。但是,要允许处理大型数据集,请将allowDiskUse选项设置为true以启用$ group操作以写入临时文件。

所以在使用之前预估一下要处理的数据量是否超过 100MB,是否需要开启 allowDiskUse,即允许磁盘缓存。
MongoDB 的内存限制是 100MB,聚合阶段每个管道不能超过 16M。

在分组时,只能用提供的操作符,如果想自定义字段,需要在下一个管道,使用 $addFiels 添加字段,然后把上一个管道返回来的数据赋给字段。

MongoDB 提供的操作符还有很多,这里只是我经常使用的几个,如果有别的需求,可以去看看官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值