Что я делаю не так? Я пытаюсь отфильтровать документы, в которых совпадает дата: 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
}
]
)
ничего не найдено
У меня была такая же проблема. Я думаю, что проблема связана с форматом строки даты.
new Date('2020/12/09') --> 2020-12-08T16:00:00.000Z
new Date('2020-12-09') --> 2020-12-09T00:00:00.000Z
Я решил проблему, изменив формат строки даты на гггг-мм-дд и используя метод setUTCHours
вместо setHours
, так как мне нужно время UTC,
let date = '2020-12-09'
let startDate = new Date(new Date(date).setUTCHours(0, 0, 0, 0)); --> 2020-12-09T00:00:00.000Z
let endDate = new Date(new Date(date).setUTCHours(23, 59, 59, 999)); --> 2020-12-09T23:59:59.999Z