Rumah php教程 PHP开发 php实现的mongodb操作类

php实现的mongodb操作类

Dec 23, 2016 am 09:36 AM
mongodb

mongo_db.php

<?php
  
/**
 * Created by PhpStorm.
 * User: yangyulong
 * Date: 2015/5/26
 * Time: 13:45
 */
class Mongo_db
{
  private static $instanceof = NULL;
  public $mongo;
  private $host = &#39;localhost&#39;;
  private $port = &#39;27017&#39;;
  
  private $db;
  public $dbname;
  private $table = NULL;
  
  /**
   * 初始化类,得到mongo的实例对象
   */
  public function __construct($host = NULL, $port = NULL, $dbname = NULL, $table = NULL)
  {
  
    if (NULL === $dbname) {
      $this->throwError(&#39;集合不能为空!&#39;);
    }
  
    //判断是否传递了host和port
    if (NULL !== $host) {
      $this->host = $host;
    }
  
    if (NULL !== $port) {
      $this->port = $port;
    }
  
    $this->table = $table;
  
    $this->mongo = new MongoClient($this->host . &#39;:&#39; . $this->port);
    if ($this->getVersion() >= &#39;0.9.0&#39;) {
      $this->dbname = $this->mongo->selectDB($dbname);
      $this->db = $this->dbname->selectCollection($table);
    } else {
      $this->db = $this->mongo->$dbname->$table;
    }
  }
  
  public function getVersion()
  {
    return MongoClient::VERSION;
  }
  
  /**
   * 单例模式
   * @return Mongo|null
   */
  //public static function getInstance($host=null, $port=null, $dbname=null, $table=null){
  //
  //  if(!(self::$instanceof instanceof self)){
  //    self::$instanceof = new self($host, $port, $dbname, $table);
  //  }
  //
  //  return self::$instanceof;
  //}
  
  /**
   * 插入一条数据
   * @param array $doc
   */
  public function insert($doc = array())
  {
    if (empty($doc)) {
      $this->throwError(&#39;插入的数据不能为空!&#39;);
    }
    //保存数据信息
    try {
      if (!$this->db->insert($doc)) {
        throw new MongoException(&#39;插入数据失败&#39;);
      }
    } catch (MongoException $e) {
      $this->throwError($e->getMessage());
    }
  }
  
  /**
   * 插入多条数据信息
   * @param array $doc
   */
  public function insertMulti($doc = array())
  {
    if (empty($doc)) {
      $this->throwError(&#39;插入的数据不能为空!&#39;);
    }
    //插入数据信息
    foreach ($doc as $key => $val) {
      //判断$val是不是数组
      if (is_array($val)) {
        $this->insert($val);
      }
    }
  }
  
  /**
   * 查找一条记录
   * @return array|null
   */
  public function findOne($where = NULL)
  {
    if (NULL === $where) {
      try {
        if ($result = $this->db->findOne()) {
          return $result;
        } else {
          throw new MongoException(&#39;查找数据失败&#39;);
        }
      } catch (MongoException $e) {
        $this->throwError($e->getMessage());
      }
    } else {
      try {
        if ($result = $this->db->findOne($where)) {
          return $result;
        } else {
          throw new MongoException(&#39;查找数据失败&#39;);
        }
      } catch (MongoException $e) {
        $this->throwError($e->getMessage());
      }
    }
  
  }
  
  /**
   * todo 带条件的随后做
   * 查找所有的文档
   * @return MongoCursor
   */
  public function find($where = NULL)
  {
    if (NULL === $where) {
  
      try {
        if ($result = $this->db->find()) {
  
        } else {
          throw new MongoException(&#39;查找数据失败&#39;);
        }
      } catch (MongoException $e) {
        $this->throwError($e->getMessage());
      }
    } else {
      try {
        if ($result = $this->db->find($where)) {
  
        } else {
          throw new MongoException(&#39;查找数据失败&#39;);
        }
      } catch (MongoException $e) {
        $this->throwError($e->getMessage());
      }
    }
  
    $arr = array();
    foreach ($result as $id => $val) {
      $arr[] = $val;
    }
  
    return $arr;
  }
  
  /**
   * 获取记录条数
   * @return int
   */
  public function getCount()
  {
    try {
      if ($count = $this->db->count()) {
        return $count;
      } else {
        throw new MongoException(&#39;查找总数失败&#39;);
      }
    } catch (MongoException $e) {
      $this->throwError($e->getMessage());
    }
  }
  
  /**
   * 获取所有的数据库
   * @return array
   */
  public function getDbs()
  {
    return $this->mongo->listDBs();
  }
  
  /**
   * 删除数据库
   * @param null $dbname
   * @return mixed
   */
  public function dropDb($dbname = NULL)
  {
    if (NULL !== $dbname) {
      $retult = $this->mongo->dropDB($dbname);
      if ($retult[&#39;ok&#39;]) {
        return TRUE;
      } else {
        return FALSE;
      }
    }
    $this->throwError(&#39;请输入要删除的数据库名称&#39;);
  }
  
  /**
   * 强制关闭数据库的链接
   */
  public function closeDb()
  {
    $this->mongo->close(TRUE);
  }
  
  /**
   * 输出错误信息
   * @param $errorInfo 错误内容
   */
  public function throwError($errorInfo=&#39;&#39;)
  {
    echo "<h3>出错了:$errorInfo</h3>";
    die();
  }
  
}
Salin selepas log masuk


更多php实现的mongodb操作类相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbezaan antara nodejs dan vuejs Perbezaan antara nodejs dan vuejs Apr 21, 2024 am 04:17 AM

Node.js ialah masa jalan JavaScript bahagian pelayan, manakala Vue.js ialah rangka kerja JavaScript sisi klien untuk mencipta antara muka pengguna interaktif. Node.js digunakan untuk pembangunan bahagian pelayan, seperti pembangunan API perkhidmatan belakang dan pemprosesan data, manakala Vue.js digunakan untuk pembangunan sisi klien, seperti aplikasi satu halaman dan antara muka pengguna yang responsif.

Apa yang perlu dilakukan jika navicat tamat tempoh Apa yang perlu dilakukan jika navicat tamat tempoh Apr 23, 2024 pm 12:12 PM

Penyelesaian untuk menyelesaikan isu tamat tempoh Navicat termasuk: memperbaharui lesen dan menyahpasang semula kemas kini automatik, hubungi Navicat Premium Essentials;

Adakah sukar untuk mempelajari nodej di bahagian hadapan? Adakah sukar untuk mempelajari nodej di bahagian hadapan? Apr 21, 2024 am 04:57 AM

Untuk pembangun bahagian hadapan, kesukaran mempelajari Node.js bergantung pada asas JavaScript mereka, pengalaman pengaturcaraan sisi pelayan, kebiasaan baris arahan dan gaya pembelajaran. Keluk pembelajaran termasuk modul peringkat permulaan dan peringkat lanjutan yang memfokuskan pada konsep asas, seni bina bahagian pelayan, penyepaduan pangkalan data dan pengaturcaraan tak segerak. Secara keseluruhan, mempelajari Node.js tidak sukar untuk pembangun yang mempunyai asas yang kukuh dalam JavaScript dan bersedia untuk melaburkan masa dan usaha, tetapi bagi mereka yang kurang pengalaman yang berkaitan, mungkin terdapat cabaran tertentu untuk diatasi.

Bagaimana untuk menyambungkan navicat ke mongodb Bagaimana untuk menyambungkan navicat ke mongodb Apr 24, 2024 am 11:27 AM

Untuk menyambung ke MongoDB menggunakan Navicat, anda perlu: Pasang Navicat Buat sambungan MongoDB: a Masukkan nama sambungan, alamat hos dan port b Masukkan maklumat pengesahan (jika perlu) Tambah sijil SSL (jika perlu) Sahkan sambungan Simpan sambungan

Apakah modul yang biasa digunakan dalam nodejs? Apakah modul yang biasa digunakan dalam nodejs? Apr 21, 2024 am 04:34 AM

Modul yang paling biasa digunakan dalam Node.js termasuk: Modul sistem fail untuk operasi fail Modul rangkaian untuk komunikasi rangkaian Modul aliran untuk memproses aliran data Modul pangkalan data untuk berinteraksi dengan pangkalan data Modul utiliti lain seperti penyulitan, rentetan pertanyaan Penghuraian rentetan dan rangka kerja HTTP

Pangkalan data apakah yang baik untuk nodejs? Pangkalan data apakah yang baik untuk nodejs? Apr 21, 2024 am 05:06 AM

Untuk aplikasi Node.js, memilih pangkalan data bergantung pada keperluan aplikasi. Pangkalan data NoSQL MongoDB menyediakan fleksibiliti, Redis menyediakan konkurensi tinggi, Cassandra mengendalikan data siri masa, dan Elasticsearch dikhususkan untuk mencari. Pangkalan data SQL MySQL mempunyai prestasi cemerlang, PostgreSQL kaya dengan ciri, SQLite ringan, dan Pangkalan Data Oracle adalah komprehensif. Apabila memilih, pertimbangkan jenis data, pertanyaan, prestasi, transaksi, ketersediaan, pelesenan dan kos.

Apakah kegunaan net4.0 Apakah kegunaan net4.0 May 10, 2024 am 01:09 AM

.NET 4.0 digunakan untuk mencipta pelbagai aplikasi dan ia menyediakan pemaju aplikasi dengan ciri yang kaya termasuk: pengaturcaraan berorientasikan objek, fleksibiliti, seni bina berkuasa, penyepaduan pengkomputeran awan, pengoptimuman prestasi, perpustakaan yang luas, keselamatan, Kebolehskalaan, akses data dan mudah alih sokongan pembangunan.

Bagaimana untuk menyambungkan nodejs ke pangkalan data Bagaimana untuk menyambungkan nodejs ke pangkalan data Apr 21, 2024 am 05:07 AM

Langkah-langkah untuk menyambung ke pangkalan data dalam Node.js: Pasang pakej MySQL, MongoDB atau PostgreSQL. Buat objek sambungan pangkalan data. Buka sambungan pangkalan data dan kendalikan ralat sambungan.

See all articles