На самом деле ваш первый запрос должен работать, если вы включите информацию о времени в переменные даты startDate и endDate.
Вы можете установить часы для этих переменных перед запросом, и он должен работать.
let startDate = new Date(2020, 2, 15); //months between 0-11, so 2 means March
let endDate = new Date(2020, 2, 15);
startDate.setHours(20);
endDate.setHours(24);
const result = await Reading.find({
date: {
$gte: startDate,
$lte: endDate
}
}).select("value date");
Примеры документов:
{
"_id" : ObjectId("5e6e37d0b530b737e04ba937"),
"date" : ISODate("2020-03-15T23:11:56.443+03:00"),
"value" : "value4"
},
{
"_id" : ObjectId("5e6e33b7be142a2bf0c8f75c"),
"date" : ISODate("2020-03-15T21:54:15.823+03:00"),
"value" : "value3"
},
{
"_id" : ObjectId("5e6e33b4be142a2bf0c8f75b"),
"date" : ISODate("2020-03-15T19:54:15.823+03:00"),
"value" : "value2"
},
{
"_id" : ObjectId("5e6e33b1be142a2bf0c8f75a"),
"date" : ISODate("2020-03-15T17:54:15.823+03:00"),
"value" : "value1"
}
Вывод:
[
{
"date": "2020-03-15T18:54:15.823Z",
"_id": "5e6e33b7be142a2bf0c8f75c",
"value": "value3"
},
{
"date": "2020-03-15T20:11:56.443Z",
"_id": "5e6e37d0b530b737e04ba937",
"value": "value4"
}
]
У меня +3 часовой пояс, поэтому 18:54 на самом деле 21:54, а 20:11 - 23: 11.