Je snadné získat časy z ObjectId
... nicméně nezískáte přesnost ms.
org.bson.types.ObjectId
má 2 metody, které můžete použít:getTimeSecond()
a getTime()
(stejné jako `getTimeSecond() * 1000L
). Získáte tak unixové časové razítko.
Nepoužil jsem MongoDB se Springem - ale pokud můžete získat skutečné ObjectId
instance je stejně jednoduchá jako volání jedné z výše uvedených metod.
Nyní – pro dotazování na dokumenty v časovém rozsahu se musíte vrátit zpět a vytvořit ObjectId
objekty založené na časovém razítku. Opět - to je jednoduché - ObjectId
má konstruktor, který to může udělat za vás:
ObjectId(Date time)
Takže - vytvořte 2 ObjectId
instance, které představují vaše minimální a maximální časové hranice, pak provedou dotaz jako:
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );
kde value1
a value2
představují ObjectId
instance, kterou jste vytvořili pomocí ObjectId(Date time)