1

是否可以编写包含 AND 子句的 OR 子句。

例如,我需要对字段 field1、field2、field3 和 field4 编写查询。

Query should be field1 or field2 or (filed3 and field4)

.

有人可以帮助我。

谢谢。

4

2 回答 2

4

下面是一个简单的查询示例,如果 field1 > 1 OR field2 > 1 OR fields 3 和 4 > 1,则该查询将匹配:

{
   "$or" : [
             { "field1" : {"$gte" : 1} },
             { "field2" : {"$gte" : 1} },
             { 
               "$and" : [
                           { "field3" : {"$gte" : 1} },
                           { "field3" : {"$gte" : 1} }
                         ]
             }
           ]
}

只需将子查询切换到您的需要。

于 2013-04-09T17:02:48.497 回答
3

嗯,更简单的方法是:

{
   "$or" : [
             { "field1" : {"$gte" : 1} },
             { "field2" : {"$gte" : 1} },
             { "field3" : {"$gte" : 1}, "field4" : {"$gte" : 1} }
           ]
}

这是因为单个$or子句中的数组元素实际上是$and. 这将比使用以$and不同方式评估的显式具有更高的性能。

于 2013-04-09T17:50:20.360 回答