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)