首页 > 解决方案 > 哪些运算符在 MongoDB Aggregate 的哪个阶段工作?

问题描述

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

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

原来,那个操作符只适用于$project舞台,我试图在$addField舞台上使用它。这在操作员文档中的任何地方都没有明确说明,因此在我意识到自己的错误之前,我需要花费几个小时阅读 Stack Overflow 示例。

作为一个兼职的 Mongo 人(他大多只是涉足 Aggregate 以使我的前端生活更轻松),这对我来说是一个巨大的障碍。在这一点上,我已经阅读并重新阅读了 MongoDB 文档至少 30 个小时,但我仍然不清楚哪些操作符与框架的哪些阶段一起使用。

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

标签: mongodbaggregate

解决方案


查询投影聚合管道表达式更新有不同的运算符集。

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

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

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

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


推荐阅读