Mongodb检查存在计数vs findOne性能

时间:2018-02-06 18:21:05

标签: mongodb database-performance

我试图找出我的数据库中是否存在文档,我有点好奇,最好的方法是什么? 使用

User.findOne(query).select('_id')

User.count(query)

一方面,findOne返回24个十六进制字符串,而count只返回一个整数;另一方面,.count它将遍历整个集合,而.findOne将停在第一个匹配的文档。

我发现与此相关的唯一答案是this问题,找不到任何其他内容,哪个答案赞成.count,Mongo在性能上做了很多工作,问题是6几年前。

什么更有价值?内存(findOne)或处理能力(计数)?

1 个答案:

答案 0 :(得分:3)

在某些情况下count会给您不准确的结果。此外,性能会比findOne()慢。

  

在分片群集上,db.collection.count()可以生成   如果存在孤立文档或块迁移,则计数不准确   正在进行中。

     

使用有线Tiger存储器不正常关闭mongod后   引擎,count()报告的计数统计数据可能不准确。

由于您确实希望检查文档是否存在,我认为findOne()是更好的选择。