【问题标题】:MongoDb query OR clause having AND clause具有 AND 子句的 MongoDb 查询 OR 子句
【发布时间】:2013-04-09 15:48:01
【问题描述】:

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

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

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

.

谁能帮帮我。

谢谢。

【问题讨论】:

    标签: mongodb mongodb-php mongodb-query


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      嗯,更简单的方法是:

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-26
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        相关资源
        最近更新 更多