哪些运营商在MongoDB Aggregate的哪个阶段工作?

问题描述

我已经学习Aggregate框架大约6个月了。

我经常为新的操作员感到兴奋。我读到它,找到一个用例,尝试使用它,它不可避免地失败了……

结果证明,该运算符仅用于$project阶段,而我试图在$addField阶段使用它。在操作员文档中的任何地方都没有明确说明这一点,因此在我意识到自己的错误之前,要花几个小时阅读Stack Overflow示例。

作为Mongo的兼职人员(为了使我的前端生活更轻松,他大多只是涉足Aggregate),这对我来说是一个很大的麻烦。至此,我已经阅读并重新阅读了至少30个小时的MongoDB文档,但是我仍然不清楚哪些运算符哪些阶段框架。

我确定其他人也遇到过这种情况。那里有任何快速参考指南吗?

解决方法

queryprojectionaggregation pipeline expressionsupdates有不同的运算符集

$match阶段采用query document,而不是聚合表达式。但是您可以使用$expr运算符将聚合表达式嵌入查询文档中。

$ project,$ addFields和$ set阶段可以使用投影和聚合管道运算符。

如果聚合运算符只能在特定阶段使用,则其文档将列出该限制。请注意,可能有一些不相关的运算符恰好具有相同的名称。

示例:
$push聚合运算符文档说: $push is only available in the $group stage.
但是,还有一个$push更新运算符可与update *函数一起使用。
算术运算符$add可以在可以接受表达式的任何阶段使用。
$first累加器运算符只能在$ group阶段使用
但是数组表达式运算符$first可以在允许表达式的任何阶段使用。