Gebruik find
, zoals u al bent, en niet aggregatie die langzamer zal zijn omdat het alles moet scannen de waarden van _id velden om het maximum te bepalen.
Zoals opmerkingen hebben opgemerkt, is er geen verschil tussen het gebruik van find() en findOne() - functioneel of qua elegantie. In feite, findOne
in de shell (en in de stuurprogramma's die het implementeren) wordt gedefinieerd in termen van vinden (met limiet -1 en met mooie afdruk in de shell).
Als je echt wil het equivalent van
. doendb.collection.find().sort({_id:-1}).limit(1).pretty()
als findOne
je kunt het doen met deze syntaxis:
db.collection.findOne({$query:{},$orderby:{_id:-1}})