sa1*_*125 5 syntax multiple-conditions mongoid
我想构建一个表单的查询:
select * from some_table
where
(field1 = 'x' or field2 = 'y')
and
(field3 = 'z' or field4 = 'w')
Run Code Online (Sandbox Code Playgroud)
从阅读文档,我认为它应该看起来像这样Mongoid:
SomeTable.or({:field1 => 'x'}, {:field2 => 'y'})
.and # or is it .intersect?
.or({:field3 => 'z'}, {:field4 => 'w'})
Run Code Online (Sandbox Code Playgroud)
但那不起作用 - mongo选择器只是所有字段的"$或".这样做的正确方法是什么?谢谢.
我也很欣赏它的反转,例如 - 如何执行此查询:
select * from some_table
where
(field1 = 'x' and field2 = 'y')
or
(field3 = 'z' and field4 = 'w')
Run Code Online (Sandbox Code Playgroud)
看来我需要使用mongo和Mongoid语法的组合($something运算符):
SomeTable.and( :$or => [ { :field1 => 'x' }, { :field2 => 'y' } ])
.and( :$or => [ { :field3 => 'z' }, { :field4 => 'w' } ])
Run Code Online (Sandbox Code Playgroud)
反过来就是替换运算符:
SomeTable.or( :$and => [ { :field1 => 'x' }, { :field2 => 'y' } ])
.or( :$and => [ { :field3 => 'z' }, { :field4 => 'w' } ])
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人:)
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |