Node.js mongodb日期范围问题

Node.js mongodb日期范围问题,node.js,mongodb,Node.js,Mongodb,我的猫鼬问题是 var过滤器={ 更改日期:{$lte:toDate,$gte:fromDate} }; changeLog.find(filter).sort('-changeDate').exec(函数(err,_doc){ 如果(错误){ 记录器错误(err); 返回res.status(400).send({issucess:false,message:err,data:_doc}); } 返回res.status(200).send({issucess:true,message:er

我的猫鼬问题是

var过滤器={
更改日期:{$lte:toDate,$gte:fromDate}
};
changeLog.find(filter).sort('-changeDate').exec(函数(err,_doc){
如果(错误){
记录器错误(err);
返回res.status(400).send({issucess:false,message:err,data:_doc});
}
返回res.status(200).send({issucess:true,message:err,data:result});

});日期范围查询本质上是查找changeDate值在此范围内的文档

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

感谢您的回答,但为什么查询不包括运营商$lte的2月8日日期记录,我会将日期增加一天,并获得所需的结果,但我想知道为什么它的行为是这样的this@PriyeshTiwari您的收藏中是否有更改日期为“2016-02-08 00:00:00.000Z”的文档?是,这里是changeDate 2016-02-08 19:20:41.528Z的一个值,假设我查询日期b/w 2016年2月7日至9日,我得到的是2月7日和2月8日的记录,但不是2月9日的记录。我知道如果我将2月9日增加到2月10日,它也会得到2月9日的记录,我想知道它为什么会这样做,我怎么了doing@PriyeshTiwari我认为你没有得到它。“2016-02-08 00:00:00Z”小于“2016-02-08 19:20:528Z”,因此当您使用toDate=2016年2月8日的查询时,MongoDB将获取更改日期小于“2016-02-08 00:00:00.000Z”的文档。我甚至在回答中解释得很清楚,你到底在哪里漏掉了重点?@PriyeshTiwari我想强调的是,你仍然在构建日期,比如新日期(“2/9/2016”)
或类似的日期,但不是新日期(“2016-02-09”)。构造函数中存在一个差异,即这是“本地时间”(前者)还是UTC(后者)。当与UTC提供的数据进行比较时,您需要使用UTC
var toDate = new Date("2016-02-09"),
    fromDate = new Date("2016-02-07")
    filter = { "$gte": fromDate, "$lt": toDate };