匹配空白日期或空白数组上的特定数据

时间:2018-09-05 06:48:57

标签: node.js mongodb arraylist mongodb-query aggregation-framework

我想在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中的所有剩余条件

0 个答案:

没有答案