有没有办法预测可能存在或不存在的字段?比如将它定义为null或undefined?
例如,我正在使用:
进行查询 $project: {
date: 1,
name: "$person.name",
age: "$person.age"
}
并非所有文件都保证有$ person.age,但不是没有年龄的人返回{date:Today,name:“Bill”},我想说{date:Today,名称:“Bill”,年龄:null}。或类似的东西。
有没有比仅仅迭代数据更好的方法并创建字段(如果它们不存在)?
答案 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" ] }
}