读取MongoDB的OR查询文档OR的语法为:
Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
我不理解的是这些表达式执行的顺序。i.e
获取匹配表达式-1的文档如果未找到任何内容获取匹配表达式-2的文档,等等...表达式是一个接一个地执行还是真的?
它的意思是:“在$or查询中使用索引时,请记住$or查询的每个子句都将并行执行。”
发布于 2012-12-28 20:07:05
查询执行没有特定的顺序,无论它是:
db.col.find({ name: 's', c: 1 });
或者:
db.col.find({$or: [{name: 's'}, {c: 1}]})
在$or
中,MongoDB将有效地根据$or
中的条件数量进行x查询,为每个子句返回一个结果,合并重复项,然后返回结果(简单地说)。由于这种行为,MongoDB实际上可以对一个$or
子句使用多个索引,目前只有一个$or
子句。
在创建复合索引时,这一点很重要。索引确实需要查询的特定结构,有时才能以最佳速度工作。因此,如果您有一个复合索引:
{name: 1, c: 1}
它可能不匹配以下两个子句:
db.col.find({$or: [{name: 's'}, {c: 1}]})
以表演的方式。因此,对于$or
子句的并行性,您必须牢记这一点。如果您希望检查所有子句是否使用了索引,可以在末尾使用explain()
,它将为您分解子句及其用法。
https://stackoverflow.com/questions/14069251
复制相似问题