我正在做一个项目,我不确定find
光标的工作方式和光标的工作方式之间是否存在差异findOne
。findOne 只是一个包装器find().limit(1)
吗?我一直在寻找它,也许有人知道 mongodb 是否有特殊的方法。如果这有所作为,我正在使用 mongodb 的 PHP API。
我正在做一个项目,我不确定find
光标的工作方式和光标的工作方式之间是否存在差异findOne
。findOne 只是一个包装器find().limit(1)
吗?我一直在寻找它,也许有人知道 mongodb 是否有特殊的方法。如果这有所作为,我正在使用 mongodb 的 PHP API。
根据我自己的
find().limit(1)
基准,比findOne()
.MongoDB 文档中存在错误或
findOne()
.findOne()
执行起来更像find().limit(N)
其中 N 是查询将返回的文档数。我在试图弄清楚为什么我的简单查询如此缓慢时发现了这一点!更新:来自 10gen (MongoDB) 工程师的回复:
更新:确实,如果
find().limit(1)
检索到文档,数量级的速度差异似乎消失了。此外,我无法重现 MongoDB JavaScript 驱动程序的主要速度差异。我最初使用 MongoDB Java 驱动程序进行基准测试。findOne()
确实是 的语法糖,因为您实际上是在检索文档(而不是仅仅返回光标)。find().limit(1)
find()
有关更多详细信息,请参阅Leftium 的答案和更新。
源代码可能有很大帮助。
它是java,但我想它也可以提供帮助。
findOne()
, _这是
find()
正如我们所看到的那样,它自己
findOne()
调用find()
,获取所有内容DBOject
,i
然后返回第一个。您必须检查此链接...
http://mongoosejs.com/docs/2.7.x/docs/finding-documents.html