Я хочу запрос в 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
, если эти два поля не заполнены