在本页面
$or¶的$or操作者执行的逻辑OR的阵列上操作的两个或更多 <expressions>和文件选择满足至少的一个<expressions>。的
$or语法如下:
考虑以下示例:
此查询将选择的所有文档inventory集合,其中任一quantity字段值小于20 或该
price字段的值等于10。
$or条款和索引¶在对$or表达式中的子句求值时,MongoDB要么执行集合扫描,要么如果索引支持所有子句,则MongoDB会执行索引扫描。也就是说,为了使MongoDB使用索引来评估$or表达式,表达式中的所有子句都
$or必须由索引支持。否则,MongoDB将执行集合扫描。
在$or查询中使用索引时,的每个子句都
$or可以使用自己的索引。考虑以下查询:
为了支持此查询,而不是复合索引,您可以在上创建一个索引,在上创建quantity另一个索引price:
MongoDB可以使用除geoHaystack
索引之外的所有索引来支持$or子句。
$or和text查询¶如果$or包含$text查询,则$or索引中必须支持数组中的所有子句
。这是因为
$text查询必须使用索引,并且$or仅当索引的所有子句都受索引支持时才能使用索引。如果
$text查询不能使用索引,查询将返回错误。
$or和地理空间查询¶$or支持地理空间子句,但Near子句(near子句include $nearSphere和
$near)具有以下例外。$or不能包含带有任何其他子句的Near子句。