2016-02-09 101 views
3

我的貓鼬查詢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 }); 
 
});

FROM日期是2016年2月7日和todate是2016年2月8日。但是我僅僅獲得了第八節不是第八節的記錄。每次代碼正在TODATE爲& LT不是& LTE

在蒙戈CHANGEDATE存儲像2016年2月1日07:49:29.084Z

回答

1

您的日期範圍的查詢基本上是找文件,其CHANGEDATE值回落在此範圍內

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

因此,對於你的查詢過濾二月文件的8爲好,考慮改變你的TODATE至二月的9號,這樣它會在此範圍內挑選

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

例如

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

謝謝您的回答,但爲什麼查詢不包括與運營商$ LTE 2月8日的最新記錄,我會通過一個遞增的一天,並得到想要的結果,但我想知道爲什麼它的行爲就像這個 –

+0

@PriyeshTiwari您在changeDate爲「2016-02-08 00:00:00.000Z」的收藏中是否有文檔? – chridam

+0

是的,這裏是一個值changeDate 2016-02-08 19:20:41.528Z,假設我查詢日期b/w 2016年2月7日至9日,我得到第7和第2 feb記錄但不是第9二月我知道如果我增加9th feb到10 feb它也會得到9th feb的記錄,我想知道它爲什麼會這樣,我在做什麼錯 –