#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);
}
});
});
}