Pregunta

Es posible realizar la comparación de las consultas $gt, $lt, etc.de un Date en contra de un ObjectId y viceversa?¿El driver de mongodb elenco esto automáticamente?No esta el servidor de mongodb elenco esto automáticamente?

¿Fue útil?

Solución

Sí y no.

Es posible en virtud del JavaScript basados en los métodos para obtener una fecha a partir de la ObjectId valor en el que usted puede utilizar para hacer comparaciones.También debe ser posible construir un ObjectId dado una fecha específica de valor, pero al no ver la utilidad de que a pesar de.Pero todas son válidas y essentialy por fecha:

ObjectId("53473d87cb495e216c982929") > ObjectId("53473e57cb495e216c98292a")

ObjectId("53473d87cb495e216c982929").getTimestamp() >
ObjectId("53473e57cb495e216c98292a").getTimestamp()

ObjectId("53473d87cb495e216c982929").getTimestamp() >
ISODate("2014-04-11T00:55:35Z")    

Así, formas como esta el trabajo, incluso si realmente no es un gran declaración:

db.collection.find({ 
    "$where": function() {
         return this._id.getTimestamp() > new Date("2014-01-01");
    }
}

Como para la "creación" de _id's que se realizan en el "driver" o explícitamente por el usuario, o si todavía se omite el servidor generará uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top