Построение вашего соответствия MongoDB $ в виде строки динамически - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь построить свой $ match динамически для моего запроса MongoDB, и когда я делаю простые вещи, он отлично работает, например так:

var matchStr = {};
matchStr.status = { "$lte": 3 };
matchStr.checkout = { $gte: Math.round(new Date(d).getTime()/1000) }

А потом я запускаю

bookingTable.aggregate([
    {
        $match: {
            $and: [ matchStr ]
        }
    }, etc....

Что дает хороший:

matchStr: {
    "status": {
        "$lte": 3
    },
    "checkout": {
        "$gte": 1527669588
    }
}       

Так что все отлично, но что если я захочу добавить что-то подобное в matchStr ...

{ $or: [ { "managerDate": {$lte: managerLast} },  { "activityDate": {$lte: activityLast} } ] }
,
{ $or: [ { "expireDate":  {$gt: oneDayBackward} }, { "status": {$lt: 9}} ] }
,
{ "status": { $in: [0, 1, 2, 9 ] } }

Как я могу это сделать?

1 Ответ

0 голосов
/ 30 августа 2018

Существует несколько синтаксисов для доступа к свойству объекта

var matchStr = {}
matchStr.status = { "$lte": 3 }
matchStr.checkout = { "$gte": Math.round(new Date().getTime()/1000) }

matchStr["$or"] =  [
  { "managerDate": { "$lte": "managerLast" }},
  { "activityDate": { "$lte": "activityLast" }}
]

или Если вы хотите нажать на $or оператор

matchStr["$or"].push({ "managerDate": { "$lte": "managerLast" } })
matchStr["$or"].push({ "activityDate": { "$lte": "activityLast" } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...