我想在mongodb中查询一个条件匹配的特定数据;如果我的日期为空,或者我的数组在$match
中为空,并在$and
中运行所有条件
我有这样的请求
{
"category": ["mount"],
"city": "Delhi",
"state": "Delhi",
"postal_code": "",
"country": "India",
"hosted_date": "2018-09-10T18:30:00.000Z"
}
然后我运行此查询
db.getCollection('categories').aggregate( [
{ $unwind: "$events" },
{ $match: {
$and: [
{'events.city':{'$regex':"Delhi", '$options':'i'}},
{'events.state':{'$regex':"Delhi", '$options':'i'}},
{'events.postal_code':{'$regex':"", '$options':'i'}},
{'events.country':{'$regex':"India", '$options':'i'}},
{'events.hosted_date':new Date("2018-08-26")},
{ $cond: {
if: { $size:['category_name',2] },
then: {
'category_name': { $in: ["Track","Tour"] }
}
} },
{'category_name':{$in:["Track","Tour"]} }
]
} }
])
但是有时候hosted_date
可能是空白,或者category_name
我是空白,或者我俩都是空白。
如果这两个都是空白,我想运行$and
中的所有剩余条件