Трябва да използвате find
, както вече сте, а не агрегирането, което ще бъде по-бавно, тъй като трябва да сканира всички стойностите на полетата _id, за да разберете макс.
Както посочиха коментарите, не разлика между използването на find() и findOne() - функционално или елегантно. Всъщност findOne
в обвивката (и в драйверите, които го прилагат) се дефинира по отношение на find (с ограничение -1 и с красив печат в обвивката).
Ако наистина искате да направите еквивалента на
db.collection.find().sort({_id:-1}).limit(1).pretty()
като findOne
можете да го направите с този синтаксис:
db.collection.findOne({$query:{},$orderby:{_id:-1}})