MongoDB 聚合 - 检查第二个值是否为空



我的产品架构中有这个对象:

{
price: {
v1: number,
v2: number
}
}

price.v1始终是必需的,而不是 null,另一方面,price.v2不是必需的,可以为 null。

我想搜索价格> 20 的产品。

如果price.v2为空,我需要与price.v1 > 20核实。

如果price.v2为空,我需要与price.v2 > 20核实。

如何在聚合查询中执行此操作?

使用$ifNull运算符。当查询不为 null 时,查询将首先使用price.v2进行筛选。否则,它将使用price.v1进行筛选。

db.collection.aggregate([
{
$match: {
$expr: {
$gt: [
{
$ifNull: [
"$price.v2",
"$price.v1"
]
},
20
]
}
}
}
])

演示@蒙戈游乐场

相关内容

最新更新