MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie extrahieren Sie einen Zeitstempel aus einer MongoDB-ObjectId in Spring Data MongoDB?

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