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

Usando findOne en mongodb para obtener un elemento con una identificación máxima

Deberías usar find , como ya lo eres, y no la agregación, que será más lenta ya que necesita escanear todo los valores de los campos _id para calcular el máximo.

Como señalaron los comentarios, no diferencia entre usar find() y findOne() - funcionalmente o elegantemente. De hecho, findOne en el shell (y en los controladores que lo implementan) se define en términos de búsqueda (con límite -1 y con letra bonita en el shell).

Si realmente quiero hacer el equivalente de

db.collection.find().sort({_id:-1}).limit(1).pretty()

como findOne puedes hacerlo con esta sintaxis:

db.collection.findOne({$query:{},$orderby:{_id:-1}})