我正在寻找最快的方法来获取插入到集合中的最后 n
个对象(在mongo中)。
一种方法是使用sort
和limit
,但是为了获得少量对象而对大型数据集进行排序并不是正确的方法。
如果可以在集合的开头插入新对象,然后只使用limit
,我就可以获得最后的对象。
请注意,有时这些对象正在更新,并且可能会扩展,这就是我选择mongo的原因。
最好的方法是什么? (使用MongoDB,或许不是?)
答案 0 :(得分:3)
最好的方法是
db.collection.find().sort({_id : -1}).limit(n)
_id
上有默认索引,您不需要定义额外的索引。
使用.explain()
查找您的查询
db.collection.find().sort({_id : -1}).limit(n).explain()
如果你想获得最后6个文件,上面的查询只扫描6 + 1个文件,以便返回你的结果,这是最好的表现。