Łatwo jest uzyskać czasy z ObjectId
... jednak NIE dostajesz precyzji stwardnienia rozsianego.
org.bson.types.ObjectId
ma 2 metody, których możesz na nim użyć:getTimeSecond()
i getTime()
(tak samo jak `getTimeSecond() * 1000L
). Spowoduje to uzyskanie uniksowego znacznika czasu.
Nie używałem MongoDB ze Springiem - ale jeśli możesz zdobyć rzeczywisty ObjectId
przykład jest tak proste, jak wywołanie jednej z powyższych metod.
Teraz - aby wyszukać dokumenty w przedziale czasowym, musisz cofnąć się i utworzyć ObjectId
obiekty na podstawie znacznika czasu. Znowu – to jest proste – ObjectId
ma konstruktor, który może to zrobić za Ciebie:
ObjectId(Date time)
Więc - utwórz 2 ObjectId
instancje, które reprezentują Twoje minimalne i maksymalne granice czasu, wykonają zapytanie takie jak:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
gdzie value1
i value2
reprezentują ObjectId
instancja utworzona przez ObjectId(Date time)