假设我在MongoDB中有一个集合,它有两个字段:foobar.我正在构建一个聚合管道,我想要计算另一个字段(baz),它包含从foo开始的值(如果设置了值),或者按照这个特定的顺序从bar开始.

该行为应等同于以下JavaScript代码:

const baz = foo ?? bar;

实现这一目标的最佳方式是什么?

推荐答案

您可以使用$ifNull运算符来执行此操作:

db.collection.aggregate([
  {
    $set: {
      "aOrB": {
        "$ifNull": [
          "$a",
          "$b"
        ]
      }
    }
  }
])

看看这个mongoplayground.

Mongodb相关问答推荐

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

为什么 mongoose 在 mongodb 中找不到我的数据

在不知道字段名称的情况下如何引用 MongoDB 中的字段?

对对象数组进行分组并在 mongodb 中获取计数

MongoDB 聚合 $match 阶段与条件查询

lexik_jwt_authentication下无法识别的选项api_platform

MongoDB:使用数组过滤器进行更新插入

看起来当我执行 fs.writeFile() 时,更改的文件会重新启动 nodemon.怎么让它不重启?

如何在 mongodb 中设置整数的默认值?

指定字段对于 MongoDB 是transient瞬态的,但对于 RestController 不是

使用模拟 MongoDB 服务器进行单元测试

GeoJSON 和 MongoDB:将点存储为 GeoJSON.Point 是否值得?

Mongo 重启错误 -- /var/run/mongodb/mongod.pid 存在

RoR3 上的 Mongoid:1)如何在查询中返回特定字段? 2)需要什么 inverse_of ?

MongoError:Topology is closed, please connect despite established database connection

为什么我新创建的 mongodb 本地数据库增长到 24GB?

填充mongoose后查找

如何仅通过一次调用将一组对象保存到mongoose数据库?

MongoDB MapReduce - 发出一个键/一个值不调用reduce

python + pymongo:如何从 for 循环中在 mongo 中的现有文档上插入新字段