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函数学习之PHP函数点评
Jul 05 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
php更新cookie内容的详细方法
Sep 30 PHP
php pdo连接数据库操作示例
Nov 18 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代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
一个可复用的vue分页组件
2017/05/15 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
python实现弹窗祝福效果
2019/04/07 Python
Python实现不规则图形填充的思路
2020/02/02 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
如何进行Linux分区优化
2016/09/13 面试题
十佳大学生村官事迹
2014/01/09 职场文书
学习决心书
2014/03/11 职场文书
大班亲子运动会方案
2014/06/10 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
家庭困难证明
2014/10/12 职场文书
小学重阳节活动总结
2015/03/24 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
党支部评议意见
2015/06/02 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang
python 镜像环境搭建总结
2022/09/23 Python