如何用Node.js变量替换Mongo查询参数

时间:2019-04-07 21:32:24

标签: mongodb

我对Node.js有一个MongoDb获取请求。我想用变量(req.query.pauseTime)替换查询中的两个值。我怎么做。该代码适用于数字,但不适用于普通变量。

我尝试过

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

,然后尝试将{“ $ gte”:6,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 个答案:

答案 0 :(得分:0)

尝试这样,将相同的查询与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);
        }
    });
});
}