PHP开发日志 ━━ PHP8.0操作MongoDB入门(CRUD)

2024-01-14 21:18

本文主要是介绍PHP开发日志 ━━ PHP8.0操作MongoDB入门(CRUD),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装

写本文的时间是2021年11月19日,版本分别为MongoDB5.0.4,PHP 8.0 (8.0.13)。

PHP没有自带MongoDB的扩展,需要从官网(https://pecl.php.net/package/mongodb)下载最新版MongoDB扩展,目前版本为1.11.1(发布日期2021年11月2日)。
在这里插入图片描述
下载成功后解压,将其中的 php_mongodb.dll 放入PHP扩展目录 /ext,然后在PHP配置文件 php.ini 文件中添加:

extension = mongodb

PHP安装参考:PHP开发日志 ━━ IIS7安装PHP8.0及多个版本如何同时存在一台服务器

目前网上流传的大部分教程都是php5时代的内容,但由于PHP7后操作方式完全不同,需要重新学习,思路也需要调整。

还是喜欢php5那会儿的版本,清晰明确,现在这个版本…反正很不习惯。

  • Driver\Manager 入口文件,一般都要先实例化该类
  • Driver\BulkWrite 读写类,数据库的增、删、改都要先靠该类来实现
  • Driver\Query 查询类,MongoDB支持丰富的查询方式,所以单独拿出来组建了一个类
  • Driver\Cursor 返回结果类,其实就是一个Cursor类的一个对象,该类有内置的toArray()函数可以结果转换成数组形式的
  • BSON\ObjectID MongoDB 默认创建的索引是_id,在添加的时候可以指定_id,给类就是可以创建一个指定内容的_id

建立连接

可以单独,也可以批量建立连接

// 连接单个MongoDB
$manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017');
var_dump($manager);
// 输出类似:
object(MongoDB\Driver\Manager)#1 (2) {["uri"]=>string(26) "mongodb://127.0.0.1:27017/"["cluster"]=>array(0) {}
}// 连接多MongoDB
$managers = [new MongoDB\Driver\Manager('mongodb://127.0.0.1'),new MongoDB\Driver\Manager('mongodb://127.0.0.1'),new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017'),new MongoDB\Driver\Manager('mongodb://rs1.example.com,rs2.example.com/', ['replicaSet' => 'myReplicaSet']),
];
// 可循环执行
/*foreach ($managers as $manager) {$manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
}*/

选择数据库

没有确定数据库这一步,每次表操作都要带上数据库~~

插入数据

向默认的test数据库的wj表中插入数据

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");  // 插入数据
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['id' => 1, 'name'=>'测试', 'url' => 'http://www.百度.com']);
$manager->executeBulkWrite('test.wj', $bulk);

查找数据

查询test数据库的wj表中name值不为测试的数据

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");  
$filter = ['name' => '测试'];
$options = ['projection' => ['_id' => 0],'sort' => ['name' => -1],
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('test.wj', $query);
foreach ($cursor as $document) {print_r($document);
}

更新数据

将test数据库中的wj表中id为1的数据中name字段变为测试1234

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(['id' => 1],['$set' => ['name' => '测试1234']],['multi' => false, 'upsert' => false]  #multi表示只更新一条数据,upsert表示如果不存在update的记录,不进行插入操作
);
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");  
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.wj', $bulk, $writeConcern);

删除数据

使用delete() 方法删除

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete(['id' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
$bulk->delete(['id' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");  
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('test.wj', $bulk, $writeConcern);

参考

官方Mongodb 核心类:https://www.php.net/manual/zh/book.mongodb.php
如何保证MongoDB的安全性?https://zhuanlan.zhihu.com/p/55341564
php简单操作mongodb:https://blog.csdn.net/weiguang102/article/details/113555242
PHP7 MongDB 安装与使用:https://www.runoob.com/mongodb/php7-mongdb-tutorial.html
php7的mongodb基本用法(代码详解):https://www.php.cn/topic/php7/417356.html

PHP操作MongoDB早期版本:http://c.biancheng.net/mongodb2/php-mongodb.html
MongoDB学习早期版本:http://c.biancheng.net/mongodb2/
MongoDB PHP早期版本:https://www.runoob.com/mongodb/mongodb-php.html

这篇关于PHP开发日志 ━━ PHP8.0操作MongoDB入门(CRUD)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606534

相关文章

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性