MongoDB - 投影一个不存在的字段

时间:2015-04-01 18:35:22

标签: mongodb projection

有没有办法预测可能存在或不存在的字段?比如将它定义为null或undefined?

例如,我正在使用:

进行查询
      $project: {
         date: 1,
         name: "$person.name",
         age: "$person.age"
      }              

并非所有文件都保证有$ person.age,但不是没有年龄的人返回{date:Today,name:“Bill”},我想说{date:Today,名称:“Bill”,年龄:null}。或类似的东西。

有没有比仅仅迭代数据更好的方法并创建字段(如果它们不存在)?

2 个答案:

答案 0 :(得分:12)

使用$ifNull

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

您可以找到有关它的更多信息here

答案 1 :(得分:1)

这是$ifNull表达式进入战斗的地方。来自docs$ifNull

  

计算表达式并返回表达式的值(如果是)   expression计算为非null值。如果表达式计算   到null值,包括未定义值或缺失的实例   fields,返回替换表达式的值。

在您的情况下,如果age字段为null或不存在,则以下将使用$ifNull表达式返回非null $person.age字段值或字符串“Unspecified”: / p>

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