Сопоставить конкретные данные на пустую дату или пустой массив - PullRequest
0 голосов
/ 05 сентября 2018

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

...