php7Mongodb操作CURD和聚合分組求和

<?php
//初始化
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

// 插入數據
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1, 'name'=>'菜鳥教程', 'url' => 'http://www.runoob.com']);
$bulk->insert(['x' => 2, 'name'=>'Google', 'url' => 'http://www.google.com']);
$bulk->insert(['x' => 3, 'name'=>'taobao', 'url' => 'http://www.taobao.com']);
$manager->executeBulkWrite('test.sites', $bulk);

/**
 *  $lt  小於
 *  $lte 小於等於
 *  $gt  大於
 *  $gte 大於等於
 *  $ne  不等於
 *  $in  包含
 *  $nin 不包含
 * */
$filter = ['x' => ['$gt' => 0]]; //大於
$filter = ['x' => ['$lt' => 5]]; //小於
$filter = ['name' => 'Google'];  //等於
$filter = ['name' => ['$regex' => '教程']]; //模糊查詢
$filter = ['x' => ['$in' => [1,2]]]; //in用法
$options = [
    'projection' => ['_id' => 0], //key爲查詢的字段 value 1:顯示 0:隱藏
    'sort' => ['x' => 1], //1升序 -1降序
    'limit' => 0, //限制查詢條數
];

// 查詢數據
$query = new MongoDB\Driver\Query($filter, $options);//查詢請求
$cursor = $manager->executeQuery('test.sites', $query);
foreach ($cursor as $document) {
    $document = objectToArray($document);
    print_r($document);
}

//更新
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
    ['x' => 2],
    ['$set' => ['name' => '菜鳥工具', 'url' => 'tool.runoob.com']],
    ['multi' => false, 'upsert' => false]
);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
var_dump($result);

//刪除
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete(['x' => 1], ['limit' => 1]);   // limit 爲 1 時,刪除第一條匹配數據
$bulk->delete(['x' => 2], ['limit' => 0]);   // limit 爲 0 時,刪除所有匹配數據
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
var_dump($result);

//聚合查詢 $match:分組搜索條件 count:分組後求個數 sum:分組後求和
$param = [
    'aggregate' => 'sites', //表名
    'pipeline'  => [
        ['$match' => ['x' => 2]],
        ['$group' => ['_id' => '$name', 'count' => ['$sum' => 1]]],
    ],
    'cursor'    => new \stdClass()// 高版本需要帶上這個值
];

$command = new \MongoDB\Driver\Command($param);
$cursor = $manager->executeCommand('test', $command);
foreach ($cursor as $document) {
    $document = objectToArray($document);
    var_dump($document);
}

function objectToArray($object){
    $result = array();
    $object = is_object($object) ? get_object_vars($object) : $object;
    foreach ($object as $key => $val) {
        $val = (is_object($val) || is_array($val)) ? objectToArray($val) : $val;
        $result[$key] = $val;
    }
    return $result;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章