在本页面
$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子句。