Как заменить параметры запроса Mongo на Node.js переменные

#mongodb

#mongodb

Вопрос:

У меня есть запрос MongoDB get с Node.js . Я хотел бы заменить два значения в запросе переменными (req.query.PauseTime). Как мне это сделать. Код работает с числами, но не с обычными переменными.

Я пытался

 let min = req.query.pauseTime -120;
let max = req.query.pauseTime   120;
  

а затем попытался заменить {«$ gte»: 6, «$ lte»: 12} на {«$ gte»: min, «$ lte»: max}

При использовании 6 и 12 я возвращаюсь

  [ { _id: 6, count: 5 },
  { _id: 7, count: 8 },
  { _id: 9, count: 8 },
  { _id: 10, count: 2 },
  { _id: 12, count: 8 },
  { _id: 8, count: 7 },
  { _id: 11, count: 8 } ]
  

при замене переменными я получаю пустой массив.

в следующем коде:

 videoCommentsRoutes.route('/count').get(function (req, res) {
    VideoComments.aggregate([ {"$match": {"pauseTime": {"$gte": 6, "$lte": 12} } },
        {"$group" : {_id:"$pauseTime", count:{$sum:1}}}
    ]).exec(function (err, commCount){
        if(err){
            console.log(err);
        }
        else {
            res.json(commCount);
        }
    });
});
  

Итак, как я могу заменить числа 6 и 12 переменными?

Ответ №1:

Попробуйте вот так, используйте тот же запрос с переменной pauseTimeQuery

 videoCommentsRoutes.route('/count').get(function (req, res) {
     let min = Number(req.query.pauseTime) - 120;
     let max = Number(req.query.pauseTime)   120;

     const pauseTimeQuery = {
         "$gte": Number(min), 
         "$lte": Number(max)
       }    

VideoComments.aggregate([ {"$match": {"pauseTime": pauseTimeQuery } },
        {"$group" : {_id:"$pauseTime", count:{$sum:1}}}
    ]).exec(function (err, commCount){
        if(err){
            console.log(err);
        }
        else {
            res.json(commCount);
        }
    });
});
}