Você deve usar
find
, como você já é, e não a agregação, que será mais lenta, pois precisa verificar todos os valores dos campos _id para descobrir o máximo. Como os comentários apontaram, não diferença entre usar find() e findOne() - funcionalmente ou em termos de elegância. Na verdade,
findOne
no shell (e nos drivers que o implementam) é definido em termos de find (com limite -1 e com impressão bonita no shell). Se você realmente quer fazer o equivalente a
db.collection.find().sort({_id:-1}).limit(1).pretty()
como
findOne
você pode fazer isso com esta sintaxe:db.collection.findOne({$query:{},$orderby:{_id:-1}})