You should use find
, like you already are, and not aggregation which will be slower since it needs to scan all the values of _id fields to figure out the max.
As comments pointed out there is no difference between using find() and findOne() - functionally or elegance-wise. In fact, findOne
in the shell (and in the drivers which implement it) is defined in terms of find (with limit -1 and with pretty print in the shell).
If you really want to do the equivalent of
db.collection.find().sort({_id:-1}).limit(1).pretty()
as findOne
you can do it with this syntax:
db.collection.findOne({$query:{},$orderby:{_id:-1}})
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…