javascript - 什么更快 : `find().limit(1)` or `findOne()` in MongoDB/Mongoose?

标签 javascript node.js performance mongodb mongoose

我读过资料说 MongoDB 的 findOne()find().limit(1) 慢得多,但后来我也听说过。当前的真相究竟是什么?

Article from March 2013 :“使用 find() + limit() 明显更快,因为 findOne() 将始终读取并返回文档(如果存在)。find() 仅返回一个游标(或不返回),并且仅在迭代时读取数据光标。”

SE answer from 2011 :“如果检索到 find().limit(1) 文档,数量级的速度差异似乎消失了。此外,我无法使用 MongoDB JavaScript 驱动程序重现主要的速度差异。我最初使用 MongoDB Java 驱动程序进行基准测试。”

我希望无论答案是什么,它也与使用 Mongoose 的 find().sort().limit(1) 一致。和 findOne() .

最佳答案

两者都同样快。

当您执行 find().limit(1) 时,不会向服务器发送任何查询。您只需准备查询客户端。只要您不检索任何文档,您仍然可以修改光标,从而修改查询(例如通过添加 sort)。

因此,如果您只对 find().limit(1) 进行基准测试,您会发现它的速度要快得多,因为不会执行查询。可以说你是在对无用的代码进行基准测试。

关于javascript - 什么更快 : `find().limit(1)` or `findOne()` in MongoDB/Mongoose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156703/

相关文章:

javascript - 为什么我不能使用 JavaScript 更改 HTML 元素的样式?

node.js - Elastic Beanstalk 上的 AWS lambda 到 Nodejs 项目的用例

javascript - 如何在docker中使用mariadb部署ghost?

node.js - NPM 如何配置全局存储库的位置

javascript - 内联 Javascript 事件会降低网页加载性能吗?

javascript - ES6模块: why a previously exported module is not known by "child" modules?

javascript - 同一页面上的多个 Google CSE(自定义搜索引擎)框

javascript - 如何在 google-apps-script Web 应用程序的 for 循环函数中将 async/await 与 FileReader 一起使用?

python - 在 numpy 中更有效地矢量化此卷积类型循环

ios - iOS 上的 SQLite : performance and restrictions