gpt4 book ai didi

mongodb - MongoDB 如何评估多个 $or 语句?

转载 作者:可可西里 更新时间:2023-11-01 09:32:20 26 4
gpt4 key购买 nike

MongoDB 将如何评估这个查询:

db.testCol.find(
{
"$or" : [ {a:1, b:12}, {b:9, c:15}, {c:10, d:"foo"} ]
});

当扫描文档中的值时,如果第一个 OR 语句为真,是否还会评估其他语句?

逻辑上,如果 MongoDB 被优化,则不应评估 OR 语句中的其他值,但我不知道 MongoDB 是如何实现的。

更新:我更新了我的查询,因为它是错误的并且没有正确解释我想要完成的事情。我需要找到一组具有不同属性的文档,如果找到这些属性的精确组合,则必须返回该文档。

我的查询的 SQL 等价物是:

SELECT * FROM testCol 
WHERE (a = 1 AND b = 12) OR (b = 9 AND c = 15) OR (c = 10 AND d = 'foo');

最佳答案

MongoDB 将作为单独的查询执行 $or 操作的每个子句,并在后期处理过程中删除重复项。因此,每个子句都可以使用单独的索引,这通常非常有用。

换句话说,它不会查看一个文档,查看哪个 OR 子句适用,如果第一个子句匹配则提前退出。相反,它对每个子句执行完整的数据集查询,并在事后进行重复数据删除。这可能看起来效率不高,但实际上它几乎总是更快,因为第一种方法最多只能为所有子句命中一个索引,这很少有效率。

关于mongodb - MongoDB 如何评估多个 $or 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com