MongoDB查找算法的复杂度

4
MongoDB查找操作的时间复杂度是多少?假设我在MongoDB集合'A'中有n条记录,集合'B'中也有n条记录,且B集合的每个文档都有一个A的外键_id以及一个特定的标签,例如"preOrder","directOrder","pendingOrder"等。
情况1: 如果我在集合'A'上添加一些过滤器并添加B集合的查找操作,并得到B数据对象的数组结果,然后循环遍历每个对象的数组执行一些操作并计算每个标签出现的次数。
情况2: 在集合'A'上添加过滤器并循环遍历结果,在循环中查询匹配B集合的记录。
那么这两种情况在MongoDB服务器上的时间和负载会有什么不同呢?
1个回答

1

你的问题取决于是否可以使用索引来进行查询条件。如果可以使用索引,则还取决于索引类型:

如果无法使用索引,你需要考虑O(n)。

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

在特殊情况下,如果可以使用哈希索引,并且您的查询寻找确切的值,则可能为O(1)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接