分享PHP7 MongoDB Driver 使用心得
本文由PHP7教程栏目给大家分享PHP7 MongoDB Driver 使用心得,希望对需要的朋友有所帮助!
php7 只能使用Mongodb driver来驱动mongodb。
使用Mongodb Driver连接数据库
刚开始使用Mongodb Driver的时候我是拒绝的。查看官方文档只看到一排的类和不知所云的成员方法,翻了半天也找不到 find, update, delete等等关键词,更甚至稍微复杂一点的比如副本集,用户认证都不知道怎么连接数据库。
幸好文档不是完全没有,点开Mongodb\Driver\Manger::constructor 看到有几个构造参数
-
$uri
形如mongo://[host:port,host:port,host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]
-
$uriOptions
就是上面?后面的那一串参数,可以写在这里 -
$driverOptions
其他选项比如默认的读写参数
MongodbDriver CURD操作
这就是是我一开始觉得这个驱动反人类的地方,文档里没有任何的find,update,delete等字眼,只有一个Command
类和一个Query类
。
Query 类稍微好一些,提供了部分查询选项。
实际上,对Mongo数据库的所有操作,都可以通过Command类进行。而php的驱动文档对具体的 commandOptions
是不做介绍的。
正因为我是mongodb萌新,所以才会觉得这个驱动无比奇葩反人类,根本就无从下手。
我们使用这个驱动的关键,是用Command类构造一个commandOption
而这个commandOption
需要我们从mongodb的官方文档中去了解
MONGODB MANUAL - Database Commands
所有的操作,数据增删改查,聚合排序,数据库状态,用户认证等等,都可以通过这些命令搞定。下面随便举几个例子
- 连接数据库
$this->_conn = new MongoDB\Driver\Manager('mongodb://localhost:27017/test'); $this->_db = 'test'; // execute command. function exec($opts) { $cmd = new MongoDB\Driver\Command($opts); $res = $this->_conn->executeCommand($this->_db, $cmd); return $res->toArray(); }
- 条件查询,按需返回
$cmd = [ 'find' => 'table', // collection表名 'filter' => ['_id' => ['$gte' => 10, '$lt' => 20]], 'projection' => ['name' => 1, 'email' => 1] ]; $res = $this-exec($cmd);
- 修改记录
$cmd = [ 'update' => 'table', // collection 表名 'updates' => [ ['q' => [_id => ['$lt' => 10]], 'u' => ['status' => 0], 'upsert'=>0,'multi'=>1], ['q' => [_id => ['$gte' => 10]], 'u' => ['status' => 1], 'upsert'=>0,'multi'=>1], ], 'ordered' => 1, // 是否依次执行updates语句,true表示执行失败后继续后面的语句,false 表示一旦失败立即返回 ]
- 删除记录,limit只能是1或0!
$cmd = [ 'delete' => 'table', // collection 表名 'deletes' => [ ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行 ] ]
- 插入数据
$cmd = [ 'delete' => 'table', // collection 表名 'deletes' => [ ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行 ] ]
- 分组,排序
$cmd = [ 'aggregate' => 'table', // collection 表名 'pipeline' => [ '$group' => 'class', '$sort' => 'score' ] ]
- 读取数据库状态
$cmd = [ 'replSetGetStatus' => 1, ]
辅助类 BSON
最有用的当然是 MongoDB\BSON\Javascript
和 MongoDB\BSON\ObjectId
,分别是传入 javascript 脚本函数,和使用 mongodb 的ojectid。
异常 Exception
所有MongoDBDriver 产生的异常都可以用 MongoDB\Driver\Exception\Exception
捕获
Atas ialah kandungan terperinci 分享PHP7 MongoDB Driver 使用心得. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara memasang sambungan mongo dalam php7.0: 1. Buat kumpulan pengguna dan pengguna mongodb 2. Muat turun pakej kod sumber mongodb dan letakkan pakej kod sumber dalam direktori "/usr/local/src/" 3. Masukkan direktori "src/" 4. Buka zip pakej kod sumber 5. Buat direktori fail mongodb 6. Salin fail ke direktori "mongodb/" 7. Buat fail konfigurasi mongodb;

Dalam php5, kita boleh menggunakan fungsi fsockopen() untuk mengesan port TCP. Fungsi ini boleh digunakan untuk membuka sambungan rangkaian dan melakukan beberapa komunikasi rangkaian. Tetapi dalam php7, fungsi fsockopen() mungkin menghadapi beberapa masalah, seperti tidak dapat membuka port, tidak dapat menyambung ke pelayan, dsb. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi socket_create() dan fungsi socket_connect() untuk mengesan port TCP.

Untuk menyelesaikan pemalam yang tidak menunjukkan isu yang dipasang dalam PHP 7.0: Semak konfigurasi pemalam dan dayakan pemalam. Mulakan semula PHP untuk menggunakan perubahan konfigurasi. Semak kebenaran fail pemalam untuk memastikan ia betul. Pasang kebergantungan yang hilang untuk memastikan pemalam berfungsi dengan betul. Jika semua langkah lain gagal, bina semula PHP. Punca lain yang mungkin termasuk versi pemalam yang tidak serasi, memuatkan versi yang salah atau isu konfigurasi PHP.

Penyelesaian biasa untuk persekitaran pelayan PHP termasuk memastikan versi PHP yang betul dipasang dan fail yang berkaitan telah disalin ke direktori modul. Lumpuhkan SELinux buat sementara waktu atau selama-lamanya. Semak dan konfigurasikan PHP.ini untuk memastikan sambungan yang diperlukan telah ditambah dan disediakan dengan betul. Mulakan atau mulakan semula perkhidmatan PHP-FPM. Semak tetapan DNS untuk isu penyelesaian.

Cara memasang dan menggunakan php7.0: 1. Pergi ke laman web rasmi PHP untuk memuat turun versi pemasangan yang sepadan dengan sistem tempatan 2. Ekstrak fail zip yang dimuat turun ke direktori yang ditentukan 3. Buka tetingkap baris arahan dan pergi ke direktori "E:\php7" Hanya jalankan arahan "php -v".

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

Berbanding dengan PHP7, PHP8 mempunyai beberapa kelebihan dan penambahbaikan dari segi prestasi, ciri baharu dan penambahbaikan sintaks, sistem jenis, pengendalian ralat dan sambungan. Walau bagaimanapun, memilih versi yang hendak digunakan bergantung pada keperluan khusus anda dan keadaan projek. Pengenalan terperinci: 1. Peningkatan prestasi, PHP8 memperkenalkan pengkompil Just-in-Time (JIT), yang boleh meningkatkan kelajuan pelaksanaan kod 2. Ciri baharu dan penambahbaikan sintaks, PHP8 menyokong pengisytiharan parameter yang dinamakan dan parameter pilihan, membuat fungsi Panggilan adalah lebih fleksibel kelas tanpa nama, jenis pengisytiharan sifat, dsb.
