algorithm - MongoDB 查找和删除算法复杂性

标签 algorithm mongodb big-o

MongoDB find操作和remove操作的big-o复杂度是多少。假设我的 MongoDB 集合中有 n 个字符串 - 'abc',我使用 abc.find() 查询集合 'abc' 以获取 abc 中的所有元素此操作的运行时复杂度是多少?

此外,如果我执行 abc.remove({"string": s},假设我的集合中有 n 个元素,运行时复杂度是多少?

最佳答案

您的问题取决于索引是否可以用于 query criteria您的 find 与否。如果可以使用索引,还取决于type of index :

  • 如果没有索引可用,可以押O(n)。

  • 在大多数情况下,索引是 b-trees ,在这种情况下,您可以期望 O(log n)。

  • 在可以使用散列索引的特殊情况下,如果您的查询查找准确的值,它可能是 O(1)。

您可以使用 abc.explain() ton 分析查询执行计划(COLLSCAN O(1) vs IXSCAN 索引类型特定的 big-O)。

要删除集合中的项目,必须更新所有索引。从上面可以推断,这在很大程度上取决于引用该集合的索引的数量和类型。

关于algorithm - MongoDB 查找和删除算法复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498722/

相关文章:

algorithm - 关于对数的大 O 表示法

algorithm - 如何在 O(n) 时间内对双向链表进行二分查找?

algorithm - Matlab 中的离散傅里叶变换 - 理论困惑

javascript - 如何使用 Mongoose 进行查询,然后使用该文档执行其他操作?

algorithm - Big O 规则 - 问题

javascript - MongoDB,条件更新或更新

mongodb - 用表达式而不是值更新

algorithm - 是否有一种有效的方法来近似 (a/b)^n,其中 a、b 和 n 是无符号整数?

algorithm - 哈希函数——两种不同的含义?

algorithm - 散列树结构