猫鼬日期比较不会返回正确的结果

时间:2017-12-18 14:54:55

标签: node.js mongodb mongoose

我试图获取两个日期之间的所有记录。

这是我正在使用的where子句:

.where(
{
  'targetDate' : {
    '$gte' : smallBound,
    '$lte' : highBound
  }
});

其中smallBound和highBound是Date对象,其值等于

smallBound : Fri Jan 05 2018 00:00:00 GMT+0000 (UTC)
highBound : Sat Jan 06 2018 00:00:00 GMT+0000 (UTC)

我有日期记录:Fri Jan 05 2018 00:00:00 GMT+0000 (UTC)Sat Jan 06 2018 00:00:00 GMT+0000 (UTC)

但是,请求只返回一个结果(我希望2)

我做错了什么?

我只获得了2018-01-06T00:00:00.000Z条记录。

如果我尝试使用较低的下限Thu Jan 04 2018 00:00:00 GMT+0000 (UTC),我会获得2018-01-05T00:00:00.000Z记录

这是Mongoose调试日志:

**插入对象:**

  

Mongoose:clips.insert({creatorId:   ObjectId(" 5a38e6ae10aa8ae4f66a5ee1"),createdAt:new Date(" Fri,05 Jan   2018 00:00:00 GMT"),更新时间:新日期("周五,05一月201日00:00:00   GMT"),targetDate:新日期("星期五,2018年1月5日00:00:00 GMT"),键入:   ' movie',_ id:ObjectId(" 5a38e6ae10aa8ae4f66a5ee6"),__ v:0})   Mongoose:clips.insert({creatorId:   ObjectId(" 5a38e6ae10aa8ae4f66a5ee1"),createdAt:new Date(" Sat,06 Jan   2018 00:00:00 GMT"),updatedAt:new Date(" Sat,06 Jan 2018 00:00:00   GMT"),targetDate:新日期("周六,2018年1月6日00:00:00 GMT"),键入:   ' movie',_ id:ObjectId(" 5a38e6ae10aa8ae4f66a5ee7"),__ v:0})

搜索查询:

  

Mongoose:clips.find({creatorId:   ObjectId(" 5a38e6ae10aa8ae4f66a5ee1"),targetDate:{' $ gte':new   日期("周五,2018年1月5日00:00:00 GMT"),' $ lte':新日期("周六,6月6日   2018 00:00:00 GMT")}},{skip:1,limit:20,sort:{targetDate:1,   _id:1},字段:{}})

1 个答案:

答案 0 :(得分:0)

调试查询显示问题:skip: 1是罪魁祸首。

显然第一条记录总是被丢弃。