Powinieneś użyć find
, tak jak już jesteś, a nie agregację, która będzie wolniejsza, ponieważ musi przeskanować wszystko wartości pól _id, aby obliczyć maks.
Jak zaznaczono w komentarzach, nie różnica między używaniem find() i findOne() - funkcjonalnie lub elegancko. W rzeczywistości findOne
w powłoce (iw sterownikach, które to implementują) jest zdefiniowane w kategoriach find (z limitem -1 i ładnym drukiem w powłoce).
Jeśli naprawdę chcesz zrobić odpowiednik
db.collection.find().sort({_id:-1}).limit(1).pretty()
jako findOne
możesz to zrobić za pomocą tej składni:
db.collection.findOne({$query:{},$orderby:{_id:-1}})