Du bör använda find
, som du redan är, och inte aggregering som kommer att gå långsammare eftersom den måste skanna alla värdena för _id-fält för att räkna ut max.
Som kommentarerna påpekade finns det nej skillnad mellan att använda find() och findOne() - funktionellt eller elegansmässigt. Faktum är att findOne
i skalet (och i drivrutinerna som implementerar det) definieras i termer av fynd (med gräns -1 och med vackert tryck i skalet).
Om du verkligen vill göra motsvarande
db.collection.find().sort({_id:-1}).limit(1).pretty()
som findOne
du kan göra det med denna syntax:
db.collection.findOne({$query:{},$orderby:{_id:-1}})