php7连接mongodb
首先先要安装mongodb扩展
这里提供一个简易的php mongodb类;
<?php
/**
* Created by PhpStorm.
* User: adophper
* Date: 2019/1/17
* Time: 15:20
*/
/**
* mongodb操作类
* Class mongo
*/
class mongo
{
public $debug = true;
private static $_instance = [];
private $_mongo = null;
private $_db = null;
private function __construct($config)
{
//如果不是root用户需要在链接后加db: mongodb://username:password@host:port/db
if (isset($config['user'])) {
$server = sprintf("mongodb://%s:%s@%s:%s/%s", $config['user'], $config['password'], $config['host'], $config['port'], $config['db']);
}else {
$server = sprintf("mongodb://%s:%s", $config['host'], $config['port']);
}
$this->_db = $config['db'];
try {
$this->_mongo = new MongoDBDriverManager($server, ['authMechanism' => 'SCRAM-SHA-256']);
}catch (MongoConnectionException $e) {
if (self::$debug) {
echo $e->getMessage();
}
return false;
}
}
public static function getInstance($config) {
if (is_object($config)) $config = (array)$config;
$k = md5(implode('', $config));
if (!isset(self::$_instance[$k])) {
self::$_instance[$k] = new self($config);
}
return self::$_instance[$k];
}
/**
* 插入数据
* @param $data
* @return MongoDBDriverWriteResult
*/
public function insert($collection, $document){
$bulk = new MongoDBDriverBulkWrite();
$bulk->insert($document);
return $this->_mongo->executeBulkWrite($this->_db.'.'.$collection, $bulk);
}
/**
* 更新文档
* @param $filter
* @param $data
* @param array $options
* @return MongoDBDriverWriteResult
*/
public function update($collection, $filter, $newObj, $updateOptions = []){
$bulk = new MongoDBDriverBulkWrite();
$bulk->update($filter, $newObj, $updateOptions);
$writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
return $this->_mongo->executeBulkWrite($this->_db.'.'.$collection, $bulk, $writeConcern);
}
/**
* 删除文档
* @param $data
* @param array $options
* @return MongoDBDriverWriteResult
*/
public function delete($collection, $filter, $deleteOptions = []){
$bulk = new MongoDBDriverBulkWrite();
$bulk->delete($filter, $deleteOptions);
$writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
return $this->_mongo->executeBulkWrite($this->_db.'.'.$collection, $bulk, $writeConcern);
}
/**
* 查询文档
* @param $filter
* @param array $options
* @return MongoDBDriverCursor
* @throws MongoDBDriverExceptionException
*/
public function query($collection, $filter, $options = []){
$query = new MongoDBDriverQuery($filter, $options);
return $this->_mongo->executeQuery($this->_db.'.'.$collection, $query);
}
}