Bạn có thể sử dụng cond
trong $project
hoặc $expr
trong $match
giai đoạn như:
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
]
}
]
}
}
}
}
}
])
Tại đây, trước tiên, bạn kiểm tra xem trường audiPrice có phải không, sau đó thực hiện đối sánh trên khóa đó với khóa khác trên khóa giá.