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)