该$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 |
包含有关存储桶中每个图稿信息的文档数组。 |
该操作返回以下文档:
也可以看看