У меня есть коллекция mongodb, в которой хранится информация о платежах пользователей, купивших видео
Содержимое:
{
"_id" : ObjectId("5ea17279ca73ec19f84ac39a"),
"createdAt" : ISODate("2020-04-23T10:48:25.920Z"), // 23 Apr 2020
"updatedAt" : ISODate("2020-04-23T10:48:25.920Z"),
"accountId" : "0000",
"postId" : ObjectId("5e8da8533efaa66ce53bd3bb"),
"paidBy" : ObjectId("5e92e9ffda29d826d46f7562"),
"paidGet" : ObjectId("5e465194366a412b7107a1c8"),
"chargeId" : "0520114401000000538",
"status" : "Charging",
"isDeleted" : false,
"chargeAmount" : "12",
"transferAmount" : "0",
"postPrice" : "1.00",
"__v" : 0
}
{
"_id" : ObjectId("5ea173a9ca73ec19f84ac39c"),
"createdAt" : ISODate("2020-04-23T10:53:29.957Z"), //23 Apr 2020
"updatedAt" : ISODate("2020-04-23T10:53:29.957Z"),
"accountId" : "0000",
"postId" : ObjectId("5e8da8533efaa66ce53bd3bb"),
"paidBy" : ObjectId("5ea1673bca73ec19f84ac392"),
"paidGet" : ObjectId("5e465194366a412b7107a1c8"),
"chargeId" : "0520114401000000552",
"status" : "Charging",
"isDeleted" : false,
"chargeAmount" : "12",
"transferAmount" : "0",
"postPrice" : "1.00",
"__v" : 0
}
Моя проблема:
Мне нужно запросить коллекцию на основе диапазона дат по полю createdAt
:
Я использую $gte
и $lte
для запроса
Теперь мне нужно найти платежи, произошедшие 23 апреля 2020 года
Мои запросы:
db.payment.find({"createdAt" : {"$gte" : ISODate("2020-04-22") , "$lte" : ISODate("2020-04-23")}}).pretty()
db.payment.find({"createdAt" : {"$gte" : ISODate("2020-04-23") , "$lte" : ISODate("2020-04-23")}}).pretty()
Но этот запрос ничего не возвращает: то есть диапазоны дат 22 апреля 20 - 23 апреля 20 && 23 апреля 20 - 23 апреля 20 , возвращая пустой результат
Но этот запрос работает, если я добавлю один дополнительный день, то есть 24 апреля [22 апреля 20 - 24 апреля 20]
db.payment.find({"createdAt" : {"$gte" : ISODate("2020-04-22") , "$lte" : ISODate("2020-04-24")}}).pretty()
А также это: [ 23 апреля 20 - 24 апреля 20]
db.payment.find({"createdAt" : {"$gte" : ISODate("2020-04-23") , "$lte" : ISODate("2020-04-24")}}).pretty()
Дата D => дата, которую нужно найти = 23 апреля 2020 года:
Так что моя проблема в том, если я дал диапазон дат который начинается за день до этой даты D и заканчивается в ту же дату D [22 апреля 20 - 23 апреля 20] ... Нет результата:
И если я дал ту же дату D в начале и конец, [23 апреля 20 - 23 апреля 20] ... никакого результата не получено
Но если бы я дал один дополнительный день в качестве даты окончания, то результат был бы [22 апреля 20 - 24 апреля 20]
А также, если начальная дата - это дата D, а конечная дата - на один день больше, результат приходит: [23 апреля 20 - 24 апреля 20]
Почему это странное совпадение? Пожалуйста, помогите мне