Anda harus menggunakan find
, seperti Anda sudah, dan bukan agregasi yang akan lebih lambat karena perlu memindai semua nilai bidang _id untuk mengetahui nilai maksimum.
Seperti yang ditunjukkan oleh komentar, tidak perbedaan antara menggunakan find() dan findOne() - secara fungsional atau elegan. Faktanya, findOne
di shell (dan di driver yang mengimplementasikannya) didefinisikan dalam istilah find (dengan batas -1 dan dengan cetakan cantik di shell).
Jika Anda benar ingin melakukan yang setara dengan
db.collection.find().sort({_id:-1}).limit(1).pretty()
sebagai findOne
Anda dapat melakukannya dengan sintaks ini:
db.collection.findOne({$query:{},$orderby:{_id:-1}})