与构面相关的聚合阶段对传入的文档进行分类和分组。在不同的$facet
子管道中指定以下与构面相关的任何阶段,<stage>
以执行多方面的聚合:
除以下情况外,还可以使用其他
聚合阶段$facet
:
$facet
传递给其中的每个子管道完全相同的一组输入文档。这些子管道彼此完全独立,并且每个子管道输出的文档数组存储在输出文档中的单独字段中。一条子管线的输出不能用作同一$facet
阶段中另一条子管线的输入
。如果需要进一步的聚合,请在其后添加其他阶段,$facet
并指定<outputField>
所需子管道输出的字段名称。
考虑一个在线商店,其库存存储在以下
artwork
集合中:
以下操作使用MongoDB的构面功能为客户提供跨多个维度(例如标签,价格和创建年份)分类的商店库存。这个
$facet
阶段有三个子管道在使用
$sortByCount
,$bucket
或
$bucketAuto
执行这个多面的聚集。artwork
在操作开始时,来自数据库的输入文档仅被提取一次:
该操作返回以下文档: