MongoDB查詢條件

littlewxp發表於2018-04-27

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/>`;
    }

相關文章