php操作mongodb封装类与用法实例


Posted in PHP onSeptember 01, 2018

本文实例讲述了php操作mongodb封装类与用法。分享给大家供大家参考,具体如下:

近来学习了mongodb,刚好是做php开发的,随便写了php操作mongodb的封装类.

<?php
/**
 * Created by PhpStorm.
 * User: lee
 * Date: 2016/10/24
 * Time: 13:49
 */
namespace App\Http\Controllers\Api;
use App\Http\Common\ReturnApi;
/*
 *
 *
 mongdb常规操作
 */
class MongdbCommonController
{
  private static $conn;
  private static $mon;
  private static $error;
  private function __construct(){
    //self::$conn = new \MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":".env('MONGDB_PORT')."/".env('MONGDB_DB'));
    self::$conn = new \MongoClient("mongodb://".env('MONGDB_USER').":".env('MONGDB_PASS')."@".env('MONGDB_HOST').":".env('MONGDB_PORT'));
    //self::$conn = new \MongoClient("mongodb://".env('MONGDB_HOST').":".env('MONGDB_PORT'));
    $db = env('MONGDB_DB');
    self::$mon = self::$conn->$db;
  }
  public static function getInstance(){
    if(!(self::$conn instanceof self)){
      self::$conn = new self();
    }
    //return self::$conn->mydb;
    return self::$conn;
  }
  private function __clone(){
    trigger_error('Clone is not allowed');
  }//禁止克隆
  //创建索引
  public function ensureIndex($table, $index, $index_param=array())
  {
    $index_param['safe'] = 1;
    try {
      self::$mon->$table->ensureIndex($index, $index_param);
      return true;
    }
    catch (MongoCursorException $e)
    {
      self::$error = $e->getMessage();
      return false;
    }
  }
  //添加
  public function insert($table,$arr){
    try {
      self::$mon->$table->insert($arr, array('w'=>true));
      return true;
    }
    catch (MongoCursorException $e)
    {
      self::$error = $e->getMessage();
      return false;
    }
  }
  //更新
  public function update($table, $condition, $new_arr, $options=array())
  {
    $options['w'] = 1;
    if (!isset($options['multiple']))
    {
      $options['multiple'] = 0;
    }
    try {
      self::$mon->$table->update($condition, $new_arr, $options);
      return true;
    }
    catch (MongoCursorException $e)
    {
      self::$error = $e->getMessage();
      return false;
    }
  }
  //删除
  public function remove($table, $condition, $options=array())
  {
    $options['w'] = 1;
    try {
      self::$mon->$table->remove($condition, $options);
      return true;
    }
    catch (MongoCursorException $e)
    {
      self::$error = $e->getMessage();
      return false;
    }
  }
  //查找
  public function find($table, $query_condition, $result_condition=array(), $fields=array())
  {
    $cursor = self::$mon->$table->find($query_condition, $fields);
    if (!empty($result_condition['start']))
    {
      $cursor->skip($result_condition['start']);
    }
    if (!empty($result_condition['limit']))
    {
      $cursor->limit($result_condition['limit']);
    }
    if (!empty($result_condition['sort']))
    {
      $cursor->sort($result_condition['sort']);
    }
    $result = array();
    try {
      while ($cursor->hasNext())
      {
        $result[] = $cursor->getNext();
      }
    }
    catch (MongoCursorTimeoutException $e)
    {
      self::$error = $e->getMessage();
      return false;
    }
    return $result;
  }
  //查找一条记录
  public function findOne($table, $condition, $fields=array())
  {
    return self::$mon->$table->findOne($condition, $fields);
  }
  //返回表的记录数
  public function count($table)
  {
    return self::$mon->$table->count();
  }
  //返回错误信息
  public function getError()
  {
    return self::$error;
  }
}

操作实例:

use App\Http\Controllers\Api\MongdbCommonController;
$db = MongdbCommonController::getInstance();
$collection = 'tab';
$data = array('tt' =>'sdsd',
 'pp'  => 'ssdsdf');
//返回记录数
echo $db->count($collection);
//插入记录
$db->insert($collection, array("id"=>2, "title"=>"asdqw"));
//更新
$db->update($collection, array("id"=>2),array('tt'=>'dfdfd',"gg"=>"bbb",'hh'=>'dfsdsd'));
//查找记录
echo '<pre>';
print_r( $db->find($collection, array("tt"=>'dfdfd'), array("start"=>1,"limit"=>4)));
//删除
$db->remove($collection, array('tt' =>'sdsd'));

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
隐藏你的.php文件的实现方法
Mar 19 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
php与php MySQL 之间的关系
Jul 17 PHP
超级简单的php+mysql留言本源码
Nov 11 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
php文件缓存类汇总
Nov 21 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
tp5.1 框架join方法用法实例分析
May 26 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 #PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 #PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 #PHP
PHP实现websocket通信的方法示例
Aug 28 #PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 #PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 #PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 #PHP
You might like
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP简洁函数小结
2011/08/12 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
js如何打印object对象
2015/10/16 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
python实现计算倒数的方法
2015/07/11 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
优秀实习自我鉴定
2013/12/04 职场文书
企业员工培训感言
2014/02/26 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
关于感谢信的范文
2015/01/23 职场文书
武当山导游词
2015/02/03 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
门球健将观后感
2015/06/16 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技