Dovresti usare find
, come lo sei già tu, e non l'aggregazione che sarà più lenta poiché deve scansionare tutto i valori di _id campi per calcolare il massimo.
Come sottolineato dai commenti, non c'è no differenza tra l'uso di find() e findOne() - dal punto di vista funzionale o di eleganza. Infatti, findOne
nella shell (e nei driver che la implementano) è definito in termini di find (con limite -1 e con pretty print nella shell).
Se davvero voglio fare l'equivalente di
db.collection.find().sort({_id:-1}).limit(1).pretty()
come findOne
puoi farlo con questa sintassi:
db.collection.findOne({$query:{},$orderby:{_id:-1}})