更快的方法是:在MongoDB / Mongoose中查找()。limit(1)或者findOne()

我读过MongoDB的findOne()find().limit(1)慢得多的消息,但是我也听说过。 实际上现在的真相是什么?

文章从2013年3月起 :“使用find()+ limit()明显更快,因为findOne()将总是读取+返回文档,如果它存在find()只返回一个游标(或不),只读取数据如果你遍历游标。“

SE在2011年的回答是 :“如果find()。limit(1)文件被检索到,那么数量级的速度差异似乎就消失了,而且我不能重现与MongoDB JavaScript驱动程序的主要速度差异。 MongoDB Java驱动程序“。

我希望无论答案是什么,这也符合使用Mongoose的find().sort().limit(1)findOne()

       

网上收集的解决方案 "更快的方法是:在MongoDB / Mongoose中查找()。limit(1)或者findOne()"

两者同样快速。

当你find().limit(1)没有查询被发送到服务器。 你只准备查询客户端。 只要你不检索任何文档,你仍然可以修改游标,从而查询(例如添加一个sort )。

所以如果你只对find().limit(1)基准testing,你会发现它的速度要快很多,因为查询没有被执行。 可以说你是基准无用的代码。