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}})