该<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
$sort
db.collection.countDocuments()
$group
用一个$sum
表达式包装
聚合阶段。null
¶下面的聚合操作指定一组_id
的
null
,计算总销售金额,平均数量,以及算上
所有集合中的文件。
该操作返回以下结果:
此聚合操作等效于以下SQL语句:
也可以看看
$count
db.collection.countDocuments()
$group
用一个$sum
表达式包装
聚合阶段。