JAVA、PHP、前端、APP、网站开发 - 开发技术学习

开发技术学习 » 编程开发 » php连接mongodb

php连接mongodb

此文被围观1750 日期: 2019-01-18 分类 : 编程开发  标签:  ···

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

}


站点声明:部分内容源自互联网,为传播信息之用,如有侵权,请联系我们删除。

© Copyright 2011-2024 www.kfju.com. All Rights Reserved.
超级字帖 版权所有。 蜀ICP备12031064号      川公网安备51162302000234