Även om det är sant att ObjectId delvis är baserat på en "tidsstämpel", är detta vanligtvis en "klient"-biblioteksoperation för att "extrahera" detta datum från ObjectId-värdet.
Du kan göra detta med JavaScript-utvärderingen av $where
, men det kommer att behöva "skanna" hela samlingen, så det är inte särskilt effektivt:
db.collection.find(function() {
return (
( this._id.getTimestamp().valueOf() -
this._id.getTimestamp().valueOf() % ( 1000 * 60 * 60 * 24 ) )
== new Date("2014-07-14").valueOf() );
})
Det kommer i princip att jämföras för att se om ObjectId
skapades samma dag som det angivna datumet. Andra datummatematik eller metoder gäller för andra intervall.