mongodb - 哪些运算符在 MongoDB Aggregate 的哪个阶段工作?
问题描述
我已经学习聚合框架大约 6 个月了。
我经常对一个新的操作员感到兴奋。我读过它,我找到了一个用例,我尝试使用它,但它不可避免地失败了......
原来,那个操作符只适用于$project
舞台,我试图在$addField
舞台上使用它。这在操作员文档中的任何地方都没有明确说明,因此在我意识到自己的错误之前,我需要花费几个小时阅读 Stack Overflow 示例。
作为一个兼职的 Mongo 人(他大多只是涉足 Aggregate 以使我的前端生活更轻松),这对我来说是一个巨大的障碍。在这一点上,我已经阅读并重新阅读了 MongoDB 文档至少 30 个小时,但我仍然不清楚哪些操作符与框架的哪些阶段一起使用。
我确定其他人遇到过这种情况。那里有任何类型的快速参考指南吗?
解决方案
$match阶段接受查询文档,而不是聚合表达式。但是您可以使用$expr运算符将聚合表达式嵌入到查询文档中。
$project、$addFields 和 $set 阶段可以使用投影和聚合管道运算符。
如果聚合运算符只能在特定阶段使用,则其文档将列出该限制。请注意,可能有不相关的运算符碰巧具有相同的名称。
示例:
$ push聚合运算符文档说:
$push is only available in the $group stage.
但是还有一个$push更新运算符可以与 update* 函数一起使用。
算术运算符$add可用于任何可以接受表达式的阶段。$first累加器运算符只能在 $group 阶段使用,
但
数组表达式运算符$first可以在允许表达式的任何阶段使用。
推荐阅读
- powerbi - 基于类别的最高结果不正确
- html - 使用 fullPage 的插件添加视差效果
- ios - GID.sharedInstance().signIn() 使应用程序崩溃
- ruby-on-rails - ArgumentError(传递给#or的关系必须在结构上兼容。不兼容的值:[:select])
- java - java通过命令获取批处理文件命令的输出
- c# - 嵌套数组的Elasticsearch多重过滤条件
- mysql - 如何根据不同键的值获取不同的 auto_increment 值
- angular - 使用角度为 7 的primeng 表时出错
- php - 使用 LIMIT 和 UNION 选择查询 - 性能问题
- c# - 有没有办法通过 bot 框架中的 CSS 或 C# 更改 webchat 中的字体大小?