Du skal bruge find
, som du allerede er, og ikke aggregering, som vil være langsommere, da den skal scanne alle værdierne af _id-felter for at finde ud af maks.
Som kommentarer påpeget er der nej forskel på at bruge find() og findOne() - funktionelt eller elegancemæssigt. Faktisk findOne
i skallen (og i de drivere, der implementerer den) er defineret i form af fund (med grænse -1 og med smukt tryk i skallen).
Hvis du virkelig ønsker at gøre hvad der svarer til
db.collection.find().sort({_id:-1}).limit(1).pretty()
som findOne
du kan gøre det med denne syntaks:
db.collection.findOne({$query:{},$orderby:{_id:-1}})