Rumah pembangunan bahagian belakang PHP7 php7的mongodb基本用法(代码详解)

php7的mongodb基本用法(代码详解)

Apr 18, 2019 am 10:11 AM
php7

提示:PHP的mongodb扩展,从5.6开始已经废弃了原来的mongo扩展,PHP7的pecl下载地址:https://pecl.php.net/package/mongodb,或者选择mongodb官方开发:https://github.com/mongodb/mongo-php-library,git上的这个支持以前mongo写法,pecl上的mongodb不支持以前的写法。

下面用PHP7新的API总结一下:

一:CURD

1:链接

<?php
//链接mongodb
$manager = new MongoDB\Driver\Manager(&#39;mongodb://root:123@10.10.10.104:27017&#39;);
Salin selepas log masuk

root 用户;123:密码;如果没有密码则不写

2:查询

<?php

//链接mongodb
$manager = new MongoDB\Driver\Manager(&#39;mongodb://root:sjhc168@10.10.10.104:27017&#39;);

//查询
$filter =  [&#39;user_id&#39;=>[&#39;$gt&#39;=>0]]; //查询条件 user_id大于0
$options = [
   &#39;projection&#39; => [&#39;_id&#39; => 0], //不输出_id字段
   &#39;sort&#39; => [&#39;user_id&#39;=>-1] //根据user_id字段排序 1是升序,-1是降序
];
$query = new MongoDB\Driver\Query($filter, $options); //查询请求
$list = $manager->executeQuery(&#39;location.box&#39;,$query); // 执行查询 location数据库下的box集合


foreach ($list as $document) {
    print_r($document); 
}
Salin selepas log masuk

查询更多条件使用方法,参考第二节mongodb基本命令,查询

3:添加

<?php

//链接mongodb
$manager = new MongoDB\Driver\Manager(&#39;mongodb://root:sjhc168@10.10.10.104:27017&#39;);

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
//$bulk = new MongoDB\Driver\BulkWrite([&#39;ordered&#39; => flase]);//如果要改成无序操作则加flase,并行执行
$bulk->insert([&#39;user_id&#39; => 2, &#39;real_name&#39;=>&#39;中国&#39;,]);
$bulk->insert([&#39;user_id&#39; => 3, &#39;real_name&#39;=>&#39;中国人&#39;,]);
$manager->executeBulkWrite(&#39;location.box&#39;, $bulk); //执行写入 location数据库下的box集合
Salin selepas log masuk

4:修改

<?php

//链接mongodb
$manager = new MongoDB\Driver\Manager(&#39;mongodb://root:sjhc168@10.10.10.104:27017&#39;);

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
//$bulk = new MongoDB\Driver\BulkWrite([&#39;ordered&#39; => flase]);//如果要改成无序操作则加flase,并行执行
$bulk->update(
	[&#39;user_id&#39; => 2],
	[&#39;$set&#39;=>[&#39;real_name&#39;=>&#39;中国国&#39;]
]); 
//$set相当于mysql的 set,这里和mysql有两个不同的地方,
//1:字段不存在会添加一个字段;
//2:mongodb默认如果条件不成立,新增加数据,相当于insert


//如果条件不存在不新增加,可以通过设置upsert
//db.collectionName.update(query, obj, upsert, multi);

$bulk->update(
	[&#39;user_id&#39; => 5],
	[
		&#39;$set&#39;=>[&#39;fff&#39;=>&#39;中国国&#39;]
	],
	[&#39;multi&#39; => true, &#39;upsert&#39; => false] 
	//multi为true,则满足条件的全部修改,默认为true,如果改为false,则只修改满足条件的第一条
	//upsert为 treu:表示不存在就新增
);
$manager->executeBulkWrite(&#39;location.box&#39;, $bulk); //执行写入 location数据库下的box集合
Salin selepas log masuk

ordered 设置

1:默认是ture,按照顺序执行插入更新数据,如果出错,停止执行后面的,mongo官方叫串行。
2:如果是false,mongo并发的方式插入更新数据,中间出现错误,不影响后续操作无影响,mongo官方叫并行

5:删除

<?php

//链接mongodb
$manager = new MongoDB\Driver\Manager(&#39;mongodb://root:sjhc168@10.10.10.104:27017&#39;);

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
//$bulk = new MongoDB\Driver\BulkWrite([&#39;ordered&#39; => flase]);//如果要改成无序操作则加flase,并行执行
$bulk->delete([&#39;user_id&#39;=>5]);//删除user_id为5的字段
$manager->executeBulkWrite(&#39;location.box&#39;, $bulk); //执行写入 location数据库下的box集合
Salin selepas log masuk

delete还可以通过limit设置不同删除方式

$bulk->delete([&#39;user_id&#39; => 1], [&#39;limit&#39; => 1]);   // limit 为 1 时,删除第一条匹配数据
$bulk->delete([&#39;user_id&#39; => 2], [&#39;limit&#39; => 0]);   // limit 为 0 时,删除所有匹配数据,默认删除所有
Salin selepas log masuk

6:捕获异常

MongoDB\Driver\Exception\AuthenticationException
MongoDB\Driver\Exception\BulkWriteException
MongoDB\Driver\Exception\ConnectionException
MongoDB\Driver\Exception\ConnectionTimeoutException
MongoDB\Driver\Exception\Exception //所有驱动程序异常的公共接口
MongoDB\Driver\Exception\ExecutionTimeoutException
MongoDB\Driver\Exception\InvalidArgumentException
MongoDB\Driver\Exception\LogicException
MongoDB\Driver\Exception\RuntimeException
MongoDB\Driver\Exception\SSLConnectionException
MongoDB\Driver\Exception\UnexpectedValueException
MongoDB\Driver\Exception\WriteException
Salin selepas log masuk

说明:http://php.net/manual/zh/class.mongodb-driver-exception-authenticationexception.php

Atas ialah kandungan terperinci php7的mongodb基本用法(代码详解). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Bagaimana untuk memasang sambungan mongo dalam php7.0 Bagaimana untuk memasang sambungan mongo dalam php7.0 Nov 21, 2022 am 10:25 AM

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;

Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Mar 22, 2023 am 09:30 AM

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.

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apr 02, 2024 pm 07:39 PM

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.

Apr 09, 2024 pm 01:33 PM

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 Cara memasang dan menggunakan php7.0 Nov 30, 2022 am 09:56 AM

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 cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

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 ...

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

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

Mana satu lebih baik, php8 atau php7? Mana satu lebih baik, php8 atau php7? Nov 16, 2023 pm 03:09 PM

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.

See all articles