Det är lätt att få tider från ett ObjectId
... men du får INTE ms precision.
org.bson.types.ObjectId
har 2 metoder som du kan använda på den:getTimeSecond()
och getTime()
(samma som `getTimeSecond() * 1000L
). Dessa kommer att få din unix-tidsstämpel.
Jag har inte använt MongoDB med Spring - men om du kan få tag på det faktiska ObjectId
det är så enkelt som att anropa en av metoderna ovan.
Nu - för att söka efter dokument inom ett tidsintervall måste du gå bakåt och skapa ObjectId
objekt baserat på en tidsstämpel. Återigen - det här är enkelt - ObjectId
har en konstruktör kan göra detta åt dig:
ObjectId(Date time)
Så - skapa 2 ObjectId
instanser som representerar dina min- och maxtidsgränser gör sedan en fråga som:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
där value1
och value2
representerar ObjectId
instans du skapade via ObjectId(Date time)