Det er nemt at få tider fra et ObjectId
... dog får du IKKE ms præcision.
org.bson.types.ObjectId
har 2 metoder, du kan bruge på den:getTimeSecond()
og getTime()
(samme som `getTimeSecond() * 1000L
). Disse vil få dit unix-tidsstempel.
Jeg har ikke brugt MongoDB med Spring - men hvis du kan få fingrene i det faktiske ObjectId
det er så simpelt som at kalde en af metoderne ovenfor.
Nu - for at forespørge efter dokumenter inden for et tidsinterval skal du gå baglæns og oprette ObjectId
objekter baseret på et tidsstempel. Igen - dette er enkelt - ObjectId
har en konstruktør kan gøre dette for dig:
ObjectId(Date time)
Så - opret 2 ObjectId
forekomster, der repræsenterer dine min. og maks. tidsgrænser, laver derefter en forespørgsel som:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
hvor value1
og value2
repræsentere ObjectId
forekomst, du oprettede via ObjectId(Date time)