$lte
运算符似乎无法在日期字段上正常运行。我的数据库中有一个文档,其中Date字段设置为"Datum": {"$date":"2015-06-30T00:00:00.000Z"}
。在服务器端,查询给定月份的文档的代码是
self.routes['/getEvents'] = function(req, res) {
var CalendarId = req.query.CalId;
var start = req.query.start;
var end = req.query.end;
console.log('getEvents?CalId=' + CalendarId + '&start=' + start + '&end=' + end);
var filter = {};
filter.Datum = {"$gte": new Date(start), "$lte": new Date(end)};
filter.CalId = CalendarId;
events.find(filter, function(err,docs) {
if (err) return next(err);
res.setHeader('Content-Type','application/json');
res.statusCode = 200;
res.send(docs);
});
}
如果使用start = '2015-06-01'
和end= '2015-06-30'
调用该函数,则此文档不包含在结果集中。只有日期< 2016-06-30包括在内。我将此应用程序作为本地应用程序和mongolab.com上的在线应用程序。在在线版本中,文档包含在结果集中,但在本地应用程序中,文档不包含在结果集中。本地应用程序使用mongodb 3.0.3。在mongolab上我认为仍然有2.6.x版本在使用。