MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come si estrae un timestamp da un ObjectId MongoDB in Spring Data MongoDB?

È 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)