sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo se extrae una marca de tiempo de un ObjectId de MongoDB en Spring Data MongoDB?

Es fácil obtener tiempos de un ObjectId ... sin embargo, NO obtienes más precisión.

org.bson.types.ObjectId tiene 2 métodos que puedes usar:getTimeSecond() y getTime() (igual que `getTimeSecond() * 1000L ). Estos obtendrán una marca de tiempo de Unix.

No he usado MongoDB con Spring, pero si puede obtener el ObjectId real instancia es tan simple como llamar a uno de los métodos anteriores.

Ahora, para consultar documentos en un rango de tiempo, debe retroceder y crear ObjectId objetos basados ​​en una marca de tiempo. Nuevamente, esto es simple:el ObjectId tiene un constructor que puede hacer esto por usted:

ObjectId(Date time)

Entonces, cree 2 ObjectId instancias que representan sus límites de tiempo mínimo y máximo, luego haga una consulta como:

db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );

donde value1 y value2 representar el ObjectId instancia que creó a través de ObjectId(Date time)