mongodb日期范围问题

时间:2016-02-09 16:58:52

标签: node.js mongodb

我的猫鼬查询是



var filter = {
    changeDate: { $lte: toDate, $gte: fromDate }
};
changeLog.find(filter).sort('-changeDate').exec(function (err, _doc) {
    if (err) {
        logger.error(err);
        return res.status(400).send({ isSuccess: false, message: err, data: _doc });
    }
    return res.status(200).send({ isSuccess: true, message: err, data: result });
});




fromdate是2016年2月7日,todate是2/8/2016。但是我的第7个星期日的记录不仅仅是第8个星期五。每次代码都采用& lt而不是& lte

在mongo中,changeDate存储如2016-02-01 07:49:29.084Z

1 个答案:

答案 0 :(得分:1)

您的日期范围查询主要是查找其changeDate值落在此范围内的文档

ISODate("2016-02-07 00:00:00.000Z") <= changeDate <= ISODate("2016-02-08 00:00:00.000Z")

因此,对于您的查询来过滤2月8日文档,请考虑将您的toDate更改为2月9日,以便从该范围中选择

ISODate("2016-02-07 00:00:00.000Z") <= changeDate < ISODate("2016-02-09 00:00:00.000Z")

e.g。

var toDate = new Date("2016-02-09"),
    fromDate = new Date("2016-02-07")
    filter = { "$gte": fromDate, "$lt": toDate };