When an explicit $or is used with Criteria#where, the receiver is disjuncted as Criteria#or would operate:
irb(main):008:0> Band.where(foo: 1).where('$or'=>[{hello:'world'}]) => #<Mongoid::Criteria selector: {"$or"=>[{"foo"=>1}, {:hello=>"world"}]} options: {} class: Band embedded: false>
What should happen is #where should always add conditions to the receiver.