Chociaż prawdą jest, że ObjectId jest częściowo oparty na „sygnaturze czasowej”, generalnie jest to operacja biblioteki „klienta”, która ma na celu „wyodrębnienie” tej daty z wartości ObjectId.
Możesz to zrobić za pomocą oceny JavaScript $where
, ale będzie musiało "przeskanować" całą kolekcję, więc nie jest zbyt wydajne:
db.collection.find(function() {
return (
( this._id.getTimestamp().valueOf() -
this._id.getTimestamp().valueOf() % ( 1000 * 60 * 60 * 24 ) )
== new Date("2014-07-14").valueOf() );
})
Będzie to zasadniczo porównać, aby sprawdzić, czy ObjectId
została utworzona tego samego dnia, co podana data. Inna matematyka lub metody dat dotyczą innych przedziałów.