微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决哪些运营商在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可以在允许表达式的任何阶段使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。