我在Node / Express Framework中的mongoose中有一个查询函数,它聚合来自MongoDB的一些数据:
exports.list_FP_start_end_date_by_ID = function(req, res) {
let start = req.params.start;
let end = req.params.end;
console.log(req.params.demo_id) //gives 24
FP.aggregate([
{
$match: {"_id": req.params.demo_id}
},
{
"$addFields": {
"someArray": {
"$filter": {
input: "$someArray",
as: "doc",
cond: {
$and: [
{ $gte: [ "$$doc.Timestamp", start ] },
{ $lte: [ "$$doc.Timestamp", end ] }
]
}
}
}
}
},
{
$project: {_id:0, Fahrplanabschnitte:1}
}
]).exec(function(err, fps) {
if (err) {
res.send(err);
}
else {
res.json(fps);
}
})
}
这里唯一的问题是,如果我使用“req.params.demo_id”作为参数来检索文档的匹配_id,我会得到一个空数组...
但是,如果我对变量进行硬编码,例如24 $match: {"_id": 24}
,它会给我预期的文件作为json响应..这是我今天遇到的最奇怪的事情......为什么会这样?
我路由的网址如下:
http://localhost:6000/link/Coll/2018-06-11T17:00:00.2018-06-11T22:00:00.24
是:
http://localhost:6000/link/Coll/:start.:end.:demo_id