Лесно е да получите времена от ObjectId
... обаче НЕ получавате ms точност.
org.bson.types.ObjectId
има 2 метода, които можете да използвате върху него:getTimeSecond()
и getTime()
(същото като `getTimeSecond() * 1000L
). Те ще получат вашия unix timestamp.
Не съм използвал MongoDB със Spring - но ако можете да се докопате до действителния ObjectId
инстанция е толкова просто, колкото извикването на един от методите по-горе.
Сега – за да търсите документи в даден период от време, трябва да се върнете назад и да създадете ObjectId
обекти, базирани на клеймо за време. Отново - това е просто - ObjectId
има конструктор, който може да направи това вместо вас:
ObjectId(Date time)
И така - създайте 2 ObjectId
екземпляри, които представляват вашите минимални и максимални времеви граници, след това направете заявка като:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
където value1
и value2
представляват ObjectId
екземпляр, който сте създали чрез ObjectId(Date time)