$or
聚合运算符计算一个或多个表达式的布尔值,只要其中一个表达式为true,则返回true,只有全部为false,才返回false。
语法
{
$or: [ <expression1>, <expression2>, ... ] }
使用
除false
外,null
、0
和undefined
都被认为是false
,其他值包括非零值和数组都被认为是true
,如:
例子 | 结果 |
---|---|
{ $or: [ true, false ] } |
true |
{ $or: [ [ false ], false ] } |
true |
{ $or: [ null, 0, undefined ] } |
false |
{ $or: [ ] } |
false |
错误处理
为了让查询引擎优化查询,$or
按下面的方式处理错误:
- 如果提供给
$or
的任何表达式在单独计算时会导致错误,则包含该表达式的$or
可能会导致错误,但不保证一定会发生错误。 - 即使第一个表达式的计算结果为
true
,提供给$or
的其他表达式也可能会导致错误。
例如,如果$x
为0
,以下查询始终会产生错误:
db.example.find( {
$expr: {
$eq: [ {
$divide: [ 1, "$x" ] }, 3 ] }