如何解决哪些运营商在MongoDB Aggregate的哪个阶段工作?
我已经学习Aggregate框架大约6个月了。
我经常为新的操作员感到兴奋。我读到它,找到一个用例,尝试使用它,它不可避免地失败了……
结果证明,该运算符仅用于$project
阶段,而我试图在$addField
阶段使用它。在操作员文档中的任何地方都没有明确说明这一点,因此在我意识到自己的错误之前,要花几个小时阅读Stack Overflow示例。
作为Mongo的兼职人员(为了使我的前端生活更轻松,他大多只是涉足Aggregate),这对我来说是一个很大的麻烦。至此,我已经阅读并重新阅读了至少30个小时的MongoDB文档,但是我仍然不清楚哪些运算符与哪些阶段框架。
我确定其他人也遇到过这种情况。那里有任何快速参考指南吗?
解决方法
query,projection,aggregation pipeline expressions和updates有不同的运算符集
$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 举报,一经查实,本站将立刻删除。