请参考附图并帮我解释一下这个案例。 当 woo_order_id 为空时,为什么 cova_items 列没有分配 InStock 列的值? 查询命令:
db.cova_order.aggregate([
{
$project:{
InStock:1,
woo_order_id:1,
woo_order_data:1,
cova_items:{
$cond: { if: { $eq:["$woo_order_id",null] }, then:"$InStock" , else:"$woo_order_data" }
}
}
},
=> 结果:cova_items 列显示的值与 woo_order_data 列类似
如果有错误请告诉我。谢谢
$cond
简化了语法。
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
看来你的
$woo_order_id
不是null
,而是空的。
{$cond:[ {$eq:["$woo_order_id", ""] }, "$InStock", "$woo_order_data"]}
无论
$woo_order_id
可以是null
、undefined
还是missing
,使用$ifNull运算符我们都可以覆盖它们。
db.cova_order.aggregate([
{
$project: {
InStock: 1,
woo_order_id: 1,
woo_order_data: 1,
cova_items: {
$cond: [
{ $eq: [ { "$ifNull": [ "$woo_order_id", ""] }, "" ] },
"$InStock",
"$woo_order_data"
]
}
}
}
])