该<accumulator>运算符必须是以下累加器运算符之一:
| 名称 | 描述 |
|---|---|
$addToSet |
返回每个组的唯一表达式值的数组。数组元素的顺序未定义。 |
$avg |
返回数值的平均值。忽略非数字值。 |
$first |
从每个组的第一个文档返回一个值。仅当文档按定义的顺序定义顺序。 |
$last |
从每个组的最后一个文档返回一个值。仅当文档按定义的顺序定义顺序。 |
$max |
返回每个组的最高表达式值。 |
$mergeObjects |
返回通过组合每个组的输入文档而创建的文档。 |
$min |
返回每个组的最低表达式值。 |
$push |
返回每个组的表达式值数组。 |
$stdDevPop |
返回输入值的总体标准偏差。 |
$stdDevSamp |
返回输入值的样本标准偏差。 |
$sum |
返回数值的总和。忽略非数字值。 |
$group运算符和内存¶该$group阶段的RAM限制为100 MB。默认情况下,如果阶段超出此限制,则$group返回错误。要允许处理大型数据集,请将allowDiskUse选项设置
为
true。该标志使$group操作能够写入临时文件。有关更多信息,请参见
db.collection.aggregate()方法和
aggregate命令。
在mongo外壳程序中,创建一个示例集合,其名称
sales为以下文档:
以下聚合操作使用该$group阶段来计算sales集合中文档的数量:
该操作返回以下结果:
此聚合操作等效于以下SQL语句:
也可以看看
以下汇总操作按item
字段将文档分组,计算每件商品的总销售额,并仅返回总销售额大于或等于100的物料:
$group阶段将文档分组item以检索不同的项目值。此阶段返回
totalSaleAmount每个项目的。$match阶段过滤结果文档以仅返回totalSaleAmount大于或等于100的项目。该操作返回以下结果:
此聚合操作等效于以下SQL语句:
也可以看看
在mongo外壳程序中,创建一个示例集合,其名称
sales为以下文档:
以下管道计算2014年每一天的总销售额,平均销售额和销售数量:
$match阶段过滤文档以仅将文档从2014年传递到下一阶段。$group阶段按日期对文档进行分组,并计算每组中文档的总销售额,平均数量和总数。$sort阶段按降序按每个组的总销售额对结果进行排序。该操作返回以下结果:
此聚合操作等效于以下SQL语句:
也可以看看
$match$sortdb.collection.countDocuments()$group用一个$sum表达式包装
聚合阶段。null¶下面的聚合操作指定一组_id的
null,计算总销售金额,平均数量,以及算上
所有集合中的文件。
该操作返回以下结果:
此聚合操作等效于以下SQL语句:
也可以看看
$countdb.collection.countDocuments()$group用一个$sum表达式包装
聚合阶段。