Es stimmt zwar, dass die ObjectId teilweise auf einem „Zeitstempel“ basiert, aber im Allgemeinen ist dies eine „Client“-Bibliotheksoperation, um dieses Datum aus dem ObjectId-Wert zu „extrahieren“.
Dies können Sie mit der JavaScript-Auswertung von $where
, aber es muss die gesamte Sammlung "scannen", ist also nicht sehr effizient:
db.collection.find(function() {
return (
( this._id.getTimestamp().valueOf() -
this._id.getTimestamp().valueOf() % ( 1000 * 60 * 60 * 24 ) )
== new Date("2014-07-14").valueOf() );
})
Das wird im Grunde vergleichen, um zu sehen, ob die ObjectId
wurde am selben Tag wie das angegebene Datum erstellt. Andere Datumsberechnungen oder Methoden gelten für andere Intervalle.