Es ist einfach, Zeiten aus einer ObjectId
zu bekommen ... allerdings bekommt man KEINE MS-Präzision.
org.bson.types.ObjectId
hat 2 Methoden, die Sie darauf verwenden können:getTimeSecond()
und getTime()
(dasselbe wie `getTimeSecond() * 1000L
). Diese erhalten einen Unix-Zeitstempel.
Ich habe MongoDB nicht mit Spring verwendet - aber wenn Sie die tatsächliche ObjectId
in die Hände bekommen können Instanz ist es so einfach wie das Aufrufen einer der oben genannten Methoden.
Nun - um Dokumente in einem Zeitbereich abzufragen, müssen Sie zurückgehen und ObjectId
erstellen Objekte basierend auf einem Zeitstempel. Auch hier - das ist ganz einfach - die ObjectId
hat einen Konstruktor, der das für Sie erledigen kann:
ObjectId(Date time)
Also - erstellen Sie 2 ObjectId
Instanzen, die Ihre minimalen und maximalen Zeitgrenzen darstellen, führen Sie dann eine Abfrage wie die folgende durch:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
wobei value1
und value2
repräsentieren die ObjectId
Instanz, die Sie über ObjectId(Date time)
erstellt haben