我正在评估涉及一些MongoDB聚合查询的算法的计算成本,因此我尝试弄清楚我使用的各种操作符的成本,那么整个查询的成本将只是它们应用级联的总和。
我得出结论: $project、$match和$unwind的成本是O(n),其中n是集合中文档的数量,因为我没有任何索引,所以需要扫描所有文档。
现在我的问题是:新的$lookup运算符的成本如何?它在两个集合之间执行左连接,所以我的第一个猜测是它会计算两个集合的笛卡尔积,因此成本应该是O(n * m),其中m是第二个集合的大小。我是正确的吗?MongoDB是否做了更有效的处理?您有关于这个主题的任何参考资料吗?
我得出结论: $project、$match和$unwind的成本是O(n),其中n是集合中文档的数量,因为我没有任何索引,所以需要扫描所有文档。
现在我的问题是:新的$lookup运算符的成本如何?它在两个集合之间执行左连接,所以我的第一个猜测是它会计算两个集合的笛卡尔积,因此成本应该是O(n * m),其中m是第二个集合的大小。我是正确的吗?MongoDB是否做了更有效的处理?您有关于这个主题的任何参考资料吗?