<?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; }