MongoDB 查找并消除算法复杂性

MongoDB Find and Remove Algorithmic Complexity

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

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

您的问题取决于索引是否可用于 query criteria of your find or not. If an index can be used, it also depends on the type of index

  • 如果不能使用索引,可以押O(n)。

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

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

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

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