为什么按时间范围查询 mongoDB 不起作用?
Why is querying mongoDB by time range not working?
我正在尝试从 mongoDB
中提取数据,该数据在特定时间间隔内具有一些时间属性。过滤器由请求查询字符串定义:
var getLessonByParams = function (req, res, next){
console.log(req.query.timeFrom);
if(req.query.timeFrom !== undefined){
req.query.timeFrom = {$gte: req.query.timeFrom};
}
if(req.query.timeTo !== undefined){
req.query.timeTo = {$lte: req.query.timeTo};
}
console.log(req.query);
LessonModel.find(req.query, function (err, lessons){
if(!err){
res.status(200).json(lessons);
}
else{
return next(errorHelper(err));
}
});
};
但显然有些地方不对,因为它 return 是我指定时间之前的数据,并且没有 return 一些它应该 return 的记录。有什么想法吗?
编辑:
传入查询变量:
2015-08-01T01:15:00.000Z
代入后查询gte
:
{ timeFrom: { '$gte': Sat Aug 01 2015 03:15:00 GMT+0200 (CEST) } }
猫鼬输出:
Mongoose: lessons.find({ timeFrom: { '$gte': new Date("Sat, 01 Aug 2015 01:15:00 GMT") } }) { fields: undefined }
我正在处理的文档:
{
"_id" : ObjectId("55d1db90daea17d3e90a3c4d"),
"timeFrom" : ISODate("2015-08-01T01:15:00.000Z"),
"timeTo" : ISODate("2015-08-01T02:15:00.000Z")
}
{
"_id" : ObjectId("55d1ee1cdaea17d3e90a3c53"),
"timeFrom" : ISODate("2015-08-01T01:45:00.000Z"),
"timeTo" : ISODate("2015-08-01T02:30:00.000Z")
}
{
"_id" : ObjectId("55d73b10de2699c615778bd8"),
"timeTo" : "2015-08-02T06:45:00.000Z",
"timeFrom" : "2015-08-02T05:15:00.000Z",
}
事实证明(正如我所怀疑的那样)这是一个格式问题。一些记录将这些日期存储为字符串,而它们应存储为 ISODate
.
我正在尝试从 mongoDB
中提取数据,该数据在特定时间间隔内具有一些时间属性。过滤器由请求查询字符串定义:
var getLessonByParams = function (req, res, next){
console.log(req.query.timeFrom);
if(req.query.timeFrom !== undefined){
req.query.timeFrom = {$gte: req.query.timeFrom};
}
if(req.query.timeTo !== undefined){
req.query.timeTo = {$lte: req.query.timeTo};
}
console.log(req.query);
LessonModel.find(req.query, function (err, lessons){
if(!err){
res.status(200).json(lessons);
}
else{
return next(errorHelper(err));
}
});
};
但显然有些地方不对,因为它 return 是我指定时间之前的数据,并且没有 return 一些它应该 return 的记录。有什么想法吗?
编辑:
传入查询变量:
2015-08-01T01:15:00.000Z
代入后查询gte
:
{ timeFrom: { '$gte': Sat Aug 01 2015 03:15:00 GMT+0200 (CEST) } }
猫鼬输出:
Mongoose: lessons.find({ timeFrom: { '$gte': new Date("Sat, 01 Aug 2015 01:15:00 GMT") } }) { fields: undefined }
我正在处理的文档:
{
"_id" : ObjectId("55d1db90daea17d3e90a3c4d"),
"timeFrom" : ISODate("2015-08-01T01:15:00.000Z"),
"timeTo" : ISODate("2015-08-01T02:15:00.000Z")
}
{
"_id" : ObjectId("55d1ee1cdaea17d3e90a3c53"),
"timeFrom" : ISODate("2015-08-01T01:45:00.000Z"),
"timeTo" : ISODate("2015-08-01T02:30:00.000Z")
}
{
"_id" : ObjectId("55d73b10de2699c615778bd8"),
"timeTo" : "2015-08-02T06:45:00.000Z",
"timeFrom" : "2015-08-02T05:15:00.000Z",
}
事实证明(正如我所怀疑的那样)这是一个格式问题。一些记录将这些日期存储为字符串,而它们应存储为 ISODate
.