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

问题描述 投票:-1回答:1

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

我试过了

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

然后尝试用{“$ gte”:min,“$ lte”:max}替换{“$ gte”:6,“$ lte”:12}

当我使用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?

mongodb
1个回答
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);
        }
    });
});
}
© www.soinside.com 2019 - 2024. All rights reserved.