旧有的MongodbClient类已经被废弃了,现在PHP 连接mongo的时候使用新的MongoDB\Driver\Manager 来创建,下面是随便简单的封装了一个类,用来增删改查,只是实现了简单了,复杂的还是看文档比较靠谱
<?php/*** Created by PhpStorm.* User: raye* Date: 17/11/30* Time: 19:00*/use MongoDB\Driver\Manager;use MongoDB\Driver\Query;use MongoDB\Driver\BulkWrite;use MongoDB\Driver\ReadPreference;class MongodbManage {/** @var Manager $instance*/private static $instance;private static $_dbname;private $manager;private $_host = '192.168.1.83';private $_port = 27017;private $_bulk;private function __construct($dbname){self::$_dbname = $dbname;$this->_bulk = new BulkWrite();$this->manager = new Manager('mongodb://' . $this->_host .':'. $this->_port . '/' . self::$_dbname);}public static function instance($dbname){if (self::$_dbname == $dbname && self::$instance instanceof self) {return self::$instance;}self::$instance = new self($dbname);return self::$instance;}public function insert($collection, array $data){if (empty($collection) || empty($data)) {throw new Exception('collection or insert data can not be null');}try{$this->_bulk->insert($data);return $this->manager->executeBulkWrite(self::$_dbname .'.'. $collection, $this->_bulk);}catch (Exception $e) {new Exception($e->getLine() . '--' . $e->getMessage());}}public function find($collection, array $filter = [], $returnArr = false, array $options = [], $readPreference = 'primary'){if (empty($collection)) {throw new Exception('collection can not be null');}$query = new Query($filter, $options);$res = $this->manager->executeQuery(self::$_dbname .'.'. $collection, $query, new ReadPreference($readPreference))->toArray();if (!$returnArr){return $res;}array_walk($res,function (&$value){$value = (array)$value;});return $res;}public function multiInsert($collection, array $data){if (empty($collection) || empty($data)) {throw new Exception('collection and data can not be empty');}foreach ($data as $value) {$this->_bulk->insert($value);}$res = $this->manager->executeBulkWrite(self::$_dbname .'.'. $collection, $this->_bulk);return $res and $res->getInsertedCount() > 0 ? true : false;}public function update($collection, $filter, array $data) {if (empty($collection) || empty($filter)) {throw new Exception('collection and filter can not be null');}$this->_bulk->update($filter, $data);$res = $this->manager->executeBulkWrite(self::$_dbname .'.'. $collection,$this->_bulk);return $res->getModifiedCount() > 0 ? true : false;}public function delete($collection, $filter, $options = []){if (empty($collection) || empty($filter)) {throw new Exception('collection and filter can not be null');}$this->_bulk->delete($filter, $options);$res = $this->manager->executeBulkWrite(self::$_dbname .'.'. $collection, $this->_bulk);return $res->getDeletedCount() > 0 ? true : false;}}
