MongoDB:findOne将整个集合从数据库检索到服务器



我正在尝试创建一个网站,我正在使用mongoDB来存储我的数据库。我有一个关于查询性能的问题 查找一个 我已经广泛使用了。此查询是将整个集合从数据库带到服务器,然后对其执行迭代,还是对数据库执行迭代,然后仅将文档返回到服务器?从服务器获取整个集合将是一个问题,因为传输如此大量的数据需要时间。

了解 mongodb 如何使用索引将有助于您回答这个问题。 如果您将参数传递给findOne查询,并且这些参数与集合上的索引匹配,则mongodb将使用该索引来查找结果。 如果没有索引,mongodb 将需要扫描集合,直到找到匹配项。

例如,如果您运行如下查询:

db.coll.findOne({"_id": ObjectId("5a0a0e6f29642fd7a970420c")})

然后MongoDB将确切地知道您想要哪个文档,因为_id字段是唯一的并且包含索引。 如果您查询另一个未索引的字段,则mongodb将需要执行COLLSCAN以查找要返回的文档。

引用

官方MongoDB文档:

findOne - 返回一个满足指定查询条件的文档 集合或视图。如果多个文档满足查询,则此 方法根据自然顺序返回第一个文档 反映磁盘上文档的顺序。

显然暗示的是数据库本身只会返回一个集合,此外,您可以随时使用 postman 或控制台.log来检查服务器返回的内容(如果您不确定(。

最新更新