Il est facile d'obtenir des temps à partir d'un ObjectId ... mais vous n'obtenez PAS la précision ms.
org.bson.types.ObjectId a 2 méthodes que vous pouvez utiliser :getTimeSecond() et getTime() (identique à `getTimeSecond() * 1000L ). Ceux-ci obtiendront votre horodatage unix.
Je n'ai pas utilisé MongoDB avec Spring - mais si vous pouvez mettre la main sur le réel ObjectId instance c'est aussi simple que d'appeler l'une des méthodes ci-dessus.
Maintenant - pour rechercher des documents dans une plage de temps, vous devez revenir en arrière et créer ObjectId objets basés sur un horodatage. Encore une fois - c'est simple - le ObjectId un constructeur peut le faire pour vous :
ObjectId(Date time)
Donc - créez 2 ObjectId les instances qui représentent vos limites de temps min et max, puis faites une requête comme :
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
où value1 et value2 représentent l'ObjectId instance que vous avez créée via ObjectId(Date time)