• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP7 mongoDB扩展使用的方法分享

    前言

    最近在做的项目需要将PHP5.6升级到PHP7.0,使用过PHP-mongo扩展的同学应该知道,PHP7.0的mongodb扩展是完全不兼容PHP5.6的mongo扩展的,php-mongodb改如何使用呢。

    下面直接说明各种方法的使用:

    1.mongodb连接:

    private function connect($confArr) {
     try{
      $connStr = "mongodb://" . $confArr['host'] . ":" . $confArr['port'] . "/" . $confArr['db_name'];
      $options = array(
       'username' => $confArr['username'],
       'password' => $confArr['password'],
       'readPreference' => $confArr['read_preference'],
       'connectTimeoutMS' => intval($confArr['connect_timeout_ms']),
       'socketTimeoutMS' => intval($confArr['socket_timeout_ms']),
      );
      $mc = new MongoDB\Driver\Manager($connStr, $options);
      return $mc;
     }
     catch(Exception $e){
      return false;
     }
    }

    2.查询find:

    public function find($query = array(), $fields = array(), $collection, $sort = array(), $limit = 0, $skip = 0) {
     $conn = $this->connect();
     if (empty($conn)) {
      return false;
     }
     try {
      $data = array();
      $options = array();
      if (!empty($query)) {
       $options['projection'] = array_fill_keys($fields, 1);
      }
      if (!empty($sort)) {
       $options['sort'] = $sort;
      }
      if (!empty($limit)) {
       $options['skip'] = $skip;
       $options['limit'] = $limit;
      }
      $mongoQuery = new MongoDB\Driver\Query($query, $options);
      $readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY);
      $cursor = $conn->executeQuery($collection, $mongoQuery, $readPreference);
      foreach($cursor as $value) {
       $data[] = (array)$value;
      }
      return $data;
     } catch (Exception $e) {
      //记录错误日志
     }
     return false;
    }

    3.插入操作insert:

    public function insert($addArr, $collection) {
     if (empty($addArr) || !is_array($addArr)) {
      return false;
     }
     $conn = $this->connect();
     if (empty($conn)) {
      return false;
     }
     try {
      $bulk = new MongoDB\Driver\BulkWrite();
      $bulk->insert($addArr);
      $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 6000);
      $result = $conn->executeBulkWrite($collection, $bulk, $writeConcern);
      if ($result->getInsertedCount()) {
       return true;
      }
     } catch (Exception $e) {
      //记录错误日志
     }
     return false;
    }

    4.删除delete:

    public function delete($whereArr, $options = array(), $collection) {
     if (empty($whereArr)) {
      return false;
     }
     if (!isset($options['justOne'])) {
      $options = array(
       'justOne' => false,
      );
     }
     $conn = $this->connect();
     if (empty($conn)) {
      return false;
     }
     try {
      $bulk = new MongoDB\Driver\BulkWrite();
      $bulk->delete($whereArr, $options);
      $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 30000);
      $result = $conn->executeBulkWrite($collection, $bulk, $writeConcern);
      return true;
     } catch (Exception $e) {
      //记录错误日志
     }
     return false;
    }

    5.执行command操作:

    private function command($params, $dbName) {
     $conn = $this->connect();
     if (empty($conn)) {
      return false;
     }
     try {
      $cmd = new MongoDB\Driver\Command($params);
      $result = $conn->executeCommand($dbName, $cmd);
      return $result;
     } catch (Exception $e) {
      //记录错误
     }
     return false;
    }

    6.统计count:

    public function count($query, $collection) {
     try {
      $cmd = array(
       'count' => $collection,
       'query' => $query,
      );
      $res = $this->command($cmd);
      $result = $res->toArray();
      return $result[0]->n;
     } catch (Exception $e) {
      //记录错误
     }
     return false;
    }

    7.聚合distinct:

    public function distinct($key, $where, $collection) {
     try {
      $cmd = array(
       'distinct' => $collection,
       'key' => $key,
       'query' => $where,
      );
      $res = $this->command($cmd);
      $result = $res->toArray();
      return $result[0]->values;
     } catch (Exception $e) {
      //记录错误
     }
     return false;
    }

    8.aggregate操作:

    public function aggregate($where, $group, $collection) {
     try {
      $cmd = array(
       'aggregate' => $collection,
       'pipeline' => array(
        array(
         '$match' => $where,
        ),
        array(
         '$group' => $group,
        ),
       ),
       'explain' => false,
      );
      $res = $this->command($cmd);
      if (!$res) {
       return false;
      }
      $result = $res->toArray();
      return $result[0]->total;
     } catch (Exception $e) {
      //记录错误
     }
     return false;
    }

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • PHP扩展Swoole实现实时异步任务队列示例
    • PHP基于mcript扩展实现对称加密功能示例
    • PHP安装memcache扩展的步骤讲解
    • PHP安装BCMath扩展的方法
    • PHP扩展mcrypt实现的AES加密功能示例
    • php的扩展写法总结
    上一篇:PHP超低内存遍历目录文件和读取超大文件的方法
    下一篇:TP5.0框架实现无限极回复功能的方法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    PHP7 mongoDB扩展使用的方法分享 PHP7,mongoDB,扩展,使,用的,