该$bucket
文档包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
通过...分组 | 表达 | 用于分组文档的表达式。要指定字段路径,请在字段名称前加一个美元符号 除非 |
界线 | 数组 | 基于groupBy表达式的值的数组,这些表达式指定每个存储桶的边界。每个相邻的值对都充当存储桶的包含下边界和专有上边界。您必须至少指定两个边界。 指定的值必须按升序排列并且所有类型都相同。例外是值是混合数字类型,例如:
例 数组创建两个存储桶:
|
默认 | 文字 | 可选的。一个文字指定 如果未指定,则每个输入文档必须将 该 该 |
输出 | 文献 | 可选的。一个文档,它指定除字段外还要包含在输出文档中的 如果未指定 如果指定 |
$bucket
至少需要满足以下条件之一,否则该操作将引发错误:
groupBy
值超出了的boundaries
或不同的
BSON类型比值
boundaries
。如果groupBy
表达式解析为数组或文档,请
$bucket
使用中的比较逻辑将输入文档排列到存储桶中$sort
。
在mongo
外壳程序中,创建一个示例集合,其名称
artists
为以下文档:
以下操作根据year_born
字段将文档分组到存储桶中,并根据存储桶中文档的数量进行过滤:
该$bucket
阶段按year_born
字段将文档分组到存储桶中
。桶具有以下边界:
1840
下限和上限
1850
。1850
下限和上限1860
。1860
下限和上限
1870
。1870
下限和上限1880
。year_born
字段或该
year_born
字段不在上述范围内,则它将被放置在默认存储桶中,其_id
值为
"Other"
。该阶段包括输出文档,以确定要返回的字段:
_id |
包含范围的下限。 |
count |
存储桶中文件的数量。 |
artists |
包含有关存储桶中每个艺术家的信息的文档数组。每个文档都包含艺术家的
|
此阶段将以下文档传递到下一阶段:
该$match
阶段过滤前一阶段的输出,以仅返回包含3个以上文档的存储桶。
该操作返回以下文档:
您可以使用该$facet
阶段$bucket
在一个阶段中执行多个
聚合。
在mongo
外壳程序中,创建一个示例集合,其名称
artwork
为以下文档:
以下操作使用两个$bucket
一内阶段
$facet
阶段创建两个分组,一个price
,另一个由year
:
第一个方面按分组输入文档price
。这些存储桶具有以下边界:
0
下限和上限
200
。200
下限和上限400
。default
包含文档的存储桶,其中没有价格或价格超出上述范围。_id |
包含范围的下限。 |
count |
存储桶中文件的数量。 |
artwork |
包含有关存储桶中每个图稿信息的文档数组。 |
averagePrice |
聘请$avg 操作员显示存储桶中所有艺术品的平均价格。 |
第二个方面按分组输入文档year
。这些存储桶具有以下边界:
1890
下限和上限1910
。1910
下限和上限1920
。1910
下限和上限1940
。default
存储桶中没有超过上述范围的年份或年份的文档。count |
存储桶中文件的数量。 |
artwork |
包含有关存储桶中每个图稿信息的文档数组。 |
该操作返回以下文档:
也可以看看