Mongodb聚合管道阶段

时间:2020-06-27 04:52:39

标签: mongodb aggregation-framework

我汇总了四个阶段的比赛,查找,展开,项目,顺序相同。

假设匹配阶段的结果数据为null,即不返回任何文档,那么聚合会中断吗?还是将空数据传递到下一阶段并执行所有下一阶段?

如果它执行所有下一个阶段,那么当匹配查询的结果为null时如何中断聚合。

我问这个问题是为了尽量减少对数据库的查询。

1 个答案:

答案 0 :(得分:1)

要回答您的问题,如果为空,它将执行阶段并返回空结果。如果它为null,则无需中断。

Play

MongoDB聚合管道由阶段组成。当文档通过管道时,每个阶段都会对其进行转换。

Reference

说明:

db.orders.aggregate([
   { $match: { status: "A" } },
   { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])

第一阶段:$ match阶段通过状态字段过滤文档,并将状态等于“ A”的那些文档传递到下一阶段。

第二阶段:$ group阶段按cust_id字段对文档进行分组,以计算每个唯一cust_id的金额总和。