mongodb - 如何用 Node.js 变量替换 Mongo 查询参数
问题描述
我有一个使用 Node.js 的 MongoDb 获取请求。我想用变量(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?
解决方案
像这样尝试,使用带有 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);
}
});
});
}
推荐阅读
- python - csv 文件在“w”模式下不写入
- c - 在C中获取小写的文件扩展名
- javascript - 如何在 j 查询中获取变量/不恒定的复选框 id 和值?
- java - 在@Transactional注释下的数据库中应用触发器后如何修复空指针异常?
- ios - 在 iOS 应用程序运行时启用/禁用 Crashlytics
- vuejs2 - 在任何组件加载 Vue.js 之前运行一个方法
- postgresql - 如何选择从 postgres 中函数的参数创建的表名
- laravel - 如何修复显示所有日期的日期过滤器。在我的日期过滤器中只显示今天和之后的日期而不是之前
- sql - Mongodb Qurie 获取时间序列记录
- reactjs - 我对这个 HOC(高阶组件)代码是否正确?