Měli byste použít find
, jako už jste, a ne agregace, která bude pomalejší, protože potřebuje prohledat vše hodnoty polí _id, abyste zjistili max.
Jak bylo uvedeno v komentářích, neexistuje ne rozdíl mezi použitím find() a findOne() - funkčně nebo elegantně. Ve skutečnosti findOne
v shellu (a v ovladačích, které to implementují) je definováno pomocí find (s limitem -1 a s pěkným tiskem v shellu).
Pokud opravdu chcete udělat ekvivalent
db.collection.find().sort({_id:-1}).limit(1).pretty()
jako findOne
můžete to udělat pomocí této syntaxe:
db.collection.findOne({$query:{},$orderby:{_id:-1}})