Вы можете использовать функцию $convert
для извлечения даты из ObjectId, начиная с версии 4.0.
Что-то вроде
$convert: { input: "$_id", to: "date" }
Вы можете запросить сравнение датымежду временем начала и окончания даты.
db.collectionname.find({
"$expr":{
"$and":[
{"$gte":[{"$convert":{"input":"$_id","to":"date"}}, ISODate("2018-07-03T00:00:00.000Z")]},
{"$lte":[{"$convert":{"input":"$_id","to":"date"}}, ISODate("2018-07-03T11:59:59.999Z")]}
]
}
})
ИЛИ
Вы можете использовать сокращение $toDate
для достижения того же.
db.collectionname.find({
"$expr":{
"$and":[
{"$gte":[{"$toDate":"$_id"}, ISODate("2018-07-03T00:00:00.000Z")]},
{"$lte":[{"$toDate":"$_id"},ISODate("2018-07-03T11:59:59.999Z")]}
]
}
})