是否有一种方法可以投影可能存在或可能不存在的字段?比如将其定义为空或未定义?

例如,我正在使用以下工具进行查询:

      $project: {
         date: 1,
         name: "$person.name",
         age: "$person.age"
      }              

并不是所有的文件都保证有$person.年龄,而不是那些没有年龄被返回为{date:Today,name:"Bill"}的,我希望它是{date:Today,name:"Bill",age:null}.或者类似的东西.

有没有更好的方法,而不仅仅是在数据不存在的情况下迭代并创建字段?

推荐答案

使用$ifNull

  $project: {
     date: 1,
     name: "$person.name",
     age: { $ifNull: [ "$person.age", "null" ] }
  }  

你可以找到更多关于它的信息

Mongodb相关问答推荐

如何从文档列表的数组内部打印一个对象?

如何在Mongo Aggregate Query中创建集合的对象ID数组,并在列表中查找另一个集合中的ID

如何在MongoDB中查找和过滤嵌套数组

GO:如何在MongoDB中区分空字符串和nil

根据参考图计算子文档列表的最大值

当日期和时间在不同键的字符串中时,Mongo 查询过滤今天的数据

如何在 mongodb 查找的外键中使用正则表达式

分组前的 MongoDb 聚合总数

映射数组导致 mongodb 聚合

Mongoid 有 Map/Reduce 吗?

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

如何在mongo中插入带有日期的文档?

如何在 MongoDB 中进行内部连接?

mongod 和 mongo 命令在 Windows 10 上不起作用

无法将 $match 运算符用于带有 ObjectId 的 mongodb/mongoose 聚合

`fields cannot be identical'和''` mongoimport错误

Golang + MongoDB 嵌入类型(将一个 struct 嵌入到另一个 struct 中)

java.lang.IncompatibleClassChangeError:Implementing class Mongo

MongoDB 和 Robomongo: Can't connect (authentication)

使用 Mongoose ORM 的杀手锏是什么?