È facile ottenere i tempi da un ObjectId
... tuttavia NON ottieni la precisione del ms.
org.bson.types.ObjectId
ha 2 metodi che puoi usare su di esso:getTimeSecond()
e getTime()
(come `getTimeSecond() * 1000L
). Questi ti daranno un timestamp Unix.
Non ho usato MongoDB con Spring, ma se riesci a mettere le mani sull'attuale ObjectId
istanza è semplice come chiamare uno dei metodi precedenti.
Ora, per cercare documenti in un intervallo di tempo devi tornare indietro e creare ObjectId
oggetti basati su un timestamp. Ancora una volta - questo è semplice - l'ObjectId
ha un costruttore può farlo per te:
ObjectId(Date time)
Quindi - crea 2 ObjectId
le istanze che rappresentano i tuoi limiti di tempo minimo e massimo, quindi eseguono una query come:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
dove value1
e value2
rappresentano l'ObjectId
istanza che hai creato tramite ObjectId(Date time)