• MongoDB查找条件


    1. 关系运算符

    $eq   等于

    $lt     小于

    $lte   小于等于

    $gt    大于

    $gte  大于等于

    $in    在范围内

        //查询名字为“小明”和“小刚”的
        $condition = [
            'name' => ['$in' => ['小明','小刚']]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    2. 逻辑运算符

    $and  并且(默认的逻辑关系就是并且)

        //查询名年龄大于10并小于30的
        $condition = [
            '$and' => [
                ['age' => ['$gt' => 10]],
                ['age' => ['$lt' => 30]]
            ]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

      $and  简写方式:

        //查询名年龄大于10并小于30的
        $condition = [
            'age' => ['$gt' => 10,'$lt' => 30]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    $or  或者

         //查询名年龄等于10或等于30的
        $condition = [
            '$or' => [
                ['age' => ['$eq' => 10]],
                ['age' => ['$eq' => 30]]
            ]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    $not  

        //查询名年龄不等于10的
        $condition = [
            'age' => ['$not' => ['$eq' => 10]]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    3.  数组条件

    • 当属性的值是数组时,查询需特殊处理
      •   查询条件中,属性的值是字符串,表示查找的条件中包含该字符串
        //查询hobby里包含swim的
        $condition = [
            'hobby' => 'swim'
        ];
        $result = $collection -> find($condition,['_id'=>false]);
      •   查询条件中,属性的值包含多个内容,使用$all连接
        //查询hobby里包含swim和climb的
        $condition = [
            'hobby' => ['$all' => ['swim','climb']]
        ];
        $result = $collection -> find($condition,['_id'=>false]);
      •   查询条件中,属性的值是一个数组,表示严格等于数组的元素
        //查询hobby里就是swim和climb的
        $condition = [
            'hobby' => ['swim','climb']
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    4. 内嵌文档

    内嵌文档的表现形式类似于属性的值又是一个文档

    例如:{

        "name":"小明",

        "score":{

          "Math":100,

          "Chinese”:90

        }

       }

    • 通过 . 点号 获得内嵌文档的属性值
        //查询数学分数大于80的
        $condition = [
            'score.math' => ['$gt' => 80]
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    5. 正则过滤

    使用正则表达式进行过滤

        //查询名字以“小”开头的
        $condition = [
            'name' => new MongoRegex('/^小/')
        ];
        $result = $collection -> find($condition,['_id'=>false]);

    6. 排序

    注:需要先查询,再对查询的结果进行排序

    通过查询结果(cursor游标)的sort方法进行排序,排序有2种方式:

      • 1  正序
      • -1  倒序
        //查询结果
        $cursor = $collection -> find([],['_id'=>false]);
        //对查询结果倒序排序
        $result = $cursor -> sort(['score.math'=>-1]);
        foreach($result as $key => $value){
            echo ($value['name'].':'.$value['score']['math']).'<br/>';
        }

    7. 限定数量

    对查询的结果进行限定,该方法属于cursor游标的

      • skip()  忽略多少
      • limit()  保留多少
         //查询结果
        $cursor = $collection -> find([],['_id'=>false]);
        //对查询结果倒序排序,忽略前三个,保留后两个
        $result = $cursor
            -> sort(['score.math'=>-1])
            -> skip(3)
            -> limit(2);
        foreach($result as $key => $value){
            echo ($value['name'].':'.$value['score']['math']).'<br/>';
        }
  • 相关阅读:
    格式化金额以及数字金额转为大写金额【前端】
    前端使用 validate , 根据条件进行动态的验证添加
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行
    在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]
    公钥私钥加密解密数字证书数字签名详解【转】
    vs 2012/2013 等工具中,使用正则表达式,查找、替换
    javascript 正则(将数字转化为三位分隔的样式)【转】
    IE8 下面通过滤镜的方式进行图片旋转
    MYSQL5.5安装
    HTTP协议
  • 原文地址:https://www.cnblogs.com/writerW/p/8955299.html
Copyright © 2020-2023  润新知