在MongoDB中获取最后一个对象的最佳方式
问题描述:
我正在寻找最快的方法来获取最近的n
插入到一个集合(在mongo中)的对象。在MongoDB中获取最后一个对象的最佳方式
其中一种方法是使用sort
和limit
,但对大数据集进行排序以获取少量对象并不是正确的方法。
如果一个新的对象可以被插入到集合的开头,然后只是通过使用limit
我可以得到最后一个对象,那将是非常好的。
请注意,有时这些对象正在更新,也许扩大,这就是为什么我选择了mongo。
这样做的最佳方法是什么? (与MongoDB的,或者也许不是?)
答
最好的办法是
db.collection.find().sort({_id : -1}).limit(n)
_id
上有默认的索引,你不需要额外的定义指标。
使用.explain()
,以了解您的查询
db.collection.find().sort({_id : -1}).limit(n).explain()
如果你想获得最后的6个文档,上面的查询扫描仅6 + 1文件返回你的结果是尽可能最佳的性能。