【问题标题】:MongoDB countDocuments vs exists vs find vs findOne, which is the fastest way to check if a doc exists?MongoDB countDocuments vs exists vs find vs findOne,这是检查文档是否存在的最快方法?
【发布时间】:2020-07-21 16:10:43
【问题描述】:

我在不同的博客和答案中面临不同的意见!

如果提问显得愚蠢,请提前原谅我,但我们将不胜感激!

这个问题对我来说似乎仍然不清楚,有太多方法可以检查文档是否存在,但我不确定在 2020 年 mongodb 发布这么多更新之后,哪种方法可能是最快的方法。

【问题讨论】:

  • 这是您可以轻松衡量的东西,不是吗?
  • 如果你没有兴趣分享你的观点,请不要但至少让别人看看! @SergioTulentsev

标签: node.js mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

find({ <PREDICATE> }).limit(1)findOne({ <PREDICATE> }) 将产生相同的时间。因为查询优化器将以相同的方式对其进行评估。

MongoDB 中最快的查询是覆盖查询。那是索引覆盖的查询,没有 FETCH 阶段。如果你只是想检查文件是否存在。这将是最快的查询:

db.users.find({_id : 10021 )}, {_id: 1})

上面的查询依赖于 _id 索引(它将一直存在)并且只投射_id,因此它根本不会进入磁盘。

count 没有谓词并不总是准确的,因为它依赖于元数据。

如果您想要精确计数,您应该在聚合管道中进行。

【讨论】:

猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 2023-04-05
  • 2012-02-27
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多