-
Type:
Improvement
-
Resolution: Duplicate
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Query
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
When $or produces a single branch, the query can be simplified to contain just the branch on the top level. For example:
irb(main):008:0> Band.or(hello:1)
=>
#<Mongoid::Criteria
selector: {"$or"=>[{"hello"=>1}]}
options: {}
class: Band
embedded: false>
# equivalent to
=>
#<Mongoid::Criteria
selector: {"hello"=>1}
options: {}
class: Band
embedded: false>
Note that, per https://www.mongodb.com/docs/mongoid/master/reference/queries/#logical-operations, this simplification must only be performed when the left side of .or doesn't have any conditions and right side has only one condition, i.e. it is insufficient to just check the arguments to .or.
- duplicates
-
MONGOID-5022 Omit $or operator when it has only one condition
-
- Backlog
-
- related to
-
MONGOID-5178 $and/$or/$nor with empty array should be ignored from criteria (or return none, as appropriate)
-
- Closed
-