我试图找出我的数据库中是否存在文档,我有点好奇,最好的方法是什么? 使用
User.findOne(query).select('_id')
或
User.count(query)
一方面,findOne返回24个十六进制字符串,而count只返回一个整数;另一方面,.count
它将遍历整个集合,而.findOne
将停在第一个匹配的文档。
我发现与此相关的唯一答案是this问题,找不到任何其他内容,哪个答案赞成.count
,Mongo在性能上做了很多工作,问题是6几年前。
什么更有价值?内存(findOne)或处理能力(计数)?
答案 0 :(得分:3)
在某些情况下count
会给您不准确的结果。此外,性能会比findOne()
慢。
在分片群集上,db.collection.count()可以生成 如果存在孤立文档或块迁移,则计数不准确 正在进行中。
使用有线Tiger存储器不正常关闭mongod后 引擎,count()报告的计数统计数据可能不准确。
由于您确实希望检查文档是否存在,我认为findOne()
是更好的选择。