Mongodb 为什么$gte和$lte不能在特定日期工作,如;2020/12/09“;获取类似ISODate的文档(“2020-12-09T04:32:37.266Z”)
我做错了什么?我正在尝试筛选日期匹配的文档:Mongodb 为什么$gte和$lte不能在特定日期工作,如;2020/12/09“;获取类似ISODate的文档(“2020-12-09T04:32:37.266Z”),mongodb,Mongodb,我做错了什么?我正在尝试筛选日期匹配的文档:2020/12/09 let date= "2020/12/09"; let startDate = new Date(new Date(date).setHours(00, 00, 00)); // output: 2020-12-09T05:00:00.000Z let endDate = new Date(new Date(date).setHours(23, 59, 59, 999)); //output: 2020-1
2020/12/09
let date= "2020/12/09";
let startDate = new Date(new Date(date).setHours(00, 00, 00)); // output: 2020-12-09T05:00:00.000Z
let endDate = new Date(new Date(date).setHours(23, 59, 59, 999)); //output: 2020-12-10T04:59:59.999Z
let filter= {
mydate: {
$gte: startDate,
$lte: endDate,
},
};
collection:
[{ "mydate":ISODate("2020-12-09T04:32:37.266Z")}]
collection.aggregate(
[
{
$match: filter
}
]
)
没有找到匹配项我认为结果是正确的,因为收集中的日期(2020-12-09T04:32:37.266Z)小于您的起始日期(2020-12-09T05:00:00.000Z)我遇到了相同的问题。我认为问题在于日期字符串格式
新日期('2020/12/09')-->2020-12-08T16:00:00.000Z
新日期('2020-12-09')-->2020-12-09T00:00:00.000Z
我通过将日期字符串格式更改为yyyy-mm-dd,并使用setUTCHours
方法而不是setHours
解决了这个问题,因为我需要UTC时间
let date='2020-12-09'
让startDate=new Date(new Date(Date).setUTCHours(0,0,0,0));-->2020-12-09T00:00:00.000Z
让endDate=new Date(new Date(Date).setUTCHours(23,59,59,999));-->2020-12-09T23:59:59.999Z