具有AND子句的MongoDb查询或子句

具有AND子句的MongoDb查询或子句,mongodb,mongodb-php,mongodb-query,Mongodb,Mongodb Php,Mongodb Query,有没有可能写一个或子句,里面有和子句 例如,我需要在字段field1、field2、field3和field4上编写一个查询 Query should be field1 or field2 or (filed3 and field4) 谁能帮帮我吗 谢谢。下面是一个简单的查询示例,如果字段1>1或字段2>1或字段3和4>1,则该查询将匹配: { "$or" : [ { "field1" : {"$gte" : 1} }, { "fi

有没有可能写一个或子句,里面有和子句

例如,我需要在字段field1、field2、field3和field4上编写一个查询

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

谁能帮帮我吗


谢谢。

下面是一个简单的查询示例,如果字段1>1或字段2>1或字段3和4>1,则该查询将匹配:

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

只需根据需要切换子查询。

下面是一个简单的查询示例,如果字段1>1或字段2>1或字段3和4>1,则该查询将匹配:

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

只需根据您的需要切换子查询。

嗯,更简单的方法是:

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

这是因为单个
$或
子句中的数组元素实际上是
$和
。这将比使用显式的
$和不同评估的
更有效。

嗯,更简单的方法是:

{
   "$or" : [
             { "field1" : {"$gte" : 1} },
             { "field2" : {"$gte" : 1} },
             { "field3" : {"$gte" : 1}, "field4" : {"$gte" : 1} }
           ]
}
这是因为单个
$或
子句中的数组元素实际上是
$和
。这将比使用显式的
$和
更有效,后者的计算方式不同