cond
を使用できます $project
で または$expr
$match
で ステージ:
collectionName.aggregate([
{
$match: {
$expr: {
$cond: {
if: {
$gt: [
"$audiPrice",
null
]
},
then: {
$and: [
{
$gte: [
"$audiPrice",
price * 0.25
]
},
{
$lte: [
"$audiPrice",
price * 1.75
]
}
]
},
else: {
$and: [
{
$gte: [
"$price",
price * 0.25
]
},
{
$lte: [
"$price",
price * 1.75
]
}
]
}
}
}
}
}
])
ここでは、最初にフィールドaudiPriceがnullでないかどうかを確認してから、そのキーで一致を実行し、それ以外の場合は価格キーで一致を実行します。