S'il est vrai que l'ObjectId est en partie basé sur un "horodatage", il s'agit généralement d'une opération de bibliothèque "cliente" pour "extraire" cette date de la valeur de l'ObjectId.
Vous pouvez le faire avec l'évaluation JavaScript de $where
, mais il devra "scanner" toute la collection, donc ce n'est pas très efficace :
db.collection.find(function() {
return (
( this._id.getTimestamp().valueOf() -
this._id.getTimestamp().valueOf() % ( 1000 * 60 * 60 * 24 ) )
== new Date("2014-07-14").valueOf() );
})
Cela comparera essentiellement pour voir si le ObjectId
a été créé le même jour que la date indiquée. D'autres calculs de date ou méthodes s'appliquent à d'autres intervalles.