首页 > 解决方案 > Mongo:使用 .find({_id: id}) 与 .findOne({_id: id}) 是否相同?

问题描述

我问这个问题的表现是明智的——知道有一个独特的文件id

MyCollection.find({_id: id}) //this should return only one document - id is unique

对比

MyCollection.findOne({_id: id}) //this is equivalent to .find({_id: id}).limit(1) from what I've read

我的第一个想法是,无论过滤器如何,.find都必须通过集合,因此在.findOne我只想检索一个文档的情况下更快,对吗?或者也许因为_id总是被索引,也许没有区别?

我不是在问函数的输出,这是一个优化/性能问题。

标签: mongodboptimizationmongoose

解决方案


在这种特殊情况下,没有性能差异(因为唯一索引,是的)。

可能存在响应形状差异。我对猫鼬不熟悉,但是在mongodb shell中,find()返回一个游标(立即枚举)并findOne()直接返回文档。


推荐阅读