我想知道MongoCollection::findOne
是否有一些改进,或者如果仅仅是MongoCollection::find
的“别名”或“shorcut”,例如限制为1。MongoCollection findOne vs查找
谢谢
我想知道MongoCollection::findOne
是否有一些改进,或者如果仅仅是MongoCollection::find
的“别名”或“shorcut”,例如限制为1。MongoCollection findOne vs查找
谢谢
findOne()
是find()
的别名,带有limit(-1)
您可以在源代码here中看到此内容。它相当于
find(...).limit(-1).getNext()
。
-1实际上是相关的。下面是从wire protocol docs片段:
如果数字为负,则数据库将返回数 和关闭游标。
如果你去了壳型> db.collection.findOne
(没有括号),你可以看到,功能也只是在外壳的辅助工具。
因此,“是findOne()
只是一个帮手”。
这几乎就像一个别名,但不是回报,你的列表,它会返回一个对象。
从mongo tutorials ......
,表明我们在上一步中插入该文件是存在的,我们 可以做一个简单的findOne()操作来获得的第一个文档中 集合。此方法返回单个文档(而不是find()操作返回的 DBCursor),并且它对 有用,但只有一个文档,或者您只对 感兴趣。你不必处理光标。
方法MongoCollection::findOne
将直接返回结果阵列和MongoCollection::find
一个将返回一个MongoCursor
实例即使它是一个单值的结果。
这取决于您的搜索查询。例如,如果按ID搜索,由于ID是唯一的,因此不需要限制结果,因为只能找到一个结果。如果找到多条记录,则会将结果限制为1.另一个区别是findOne
返回数组,而find
返回mongoCursor。
mongodb.org有一个performance test report他们在哪里比较findOne并找到。根据结果,findOne的速度似乎要快35-45%。
几个数据从报告点989个行动/ s的
findOne返回一个数组,而不是一个对象。 –
哦,真的,头脑被困在了mongodb控制台里。 –