目录
使用Mongodb Driver连接数据库
MongodbDriver CURD操作
辅助类 BSON
异常 Exception
首页 后端开发 PHP7 分享PHP7 MongoDB Driver 使用心得

分享PHP7 MongoDB Driver 使用心得

Sep 30, 2020 pm 02:56 PM
php7

本文由PHP7教程栏目给大家分享PHP7 MongoDB Driver 使用心得,希望对需要的朋友有所帮助!

分享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\JavascriptMongoDB\BSON\ObjectId ,分别是传入 javascript 脚本函数,和使用 mongodb 的ojectid。

异常 Exception

所有MongoDBDriver 产生的异常都可以用 MongoDB\Driver\Exception\Exception 捕获

以上是分享PHP7 MongoDB Driver 使用心得的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

php7.0怎么安装mongo扩展 php7.0怎么安装mongo扩展 Nov 21, 2022 am 10:25 AM

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

php7检测tcp端口不好用怎么解决 php7检测tcp端口不好用怎么解决 Mar 22, 2023 am 09:30 AM

在php5中,我们可以使用fsockopen()函数来检测TCP端口。这个函数可以用来打开一个网络连接和进行一些网络通信。但是在php7中,fsockopen()函数可能会遇到一些问题,例如无法打开端口、无法连接到服务器等。为了解决这个问题,我们可以使用socket_create()函数和socket_connect()函数来检测TCP端口。

php7.0安装了插件还是显示未安装怎么办 php7.0安装了插件还是显示未安装怎么办 Apr 02, 2024 pm 07:39 PM

解决 PHP 7.0 中插件未显示已安装问题的方法:检查插件配置并启用插件。重新启动 PHP 以应用配置更改。检查插件文件权限,确保其正确。安装丢失的依赖项,以确保插件正常运行。如果其他步骤均失败,则重建 PHP。其他可能原因包括插件版本不兼容、加载错误版本或 PHP 配置问题。

php7.0怎么安装部署 php7.0怎么安装部署 Nov 30, 2022 am 09:56 AM

php7.0安装部署的方法:1、到PHP官网下载与本机系统对应的安装版本;2、将下载的zip文件解压到指定目录;3、打开命令行窗口,在“E:\php7”目录下运行“php -v”命令即可。

PHP 服务器环境常见问题指南:快速解决常见难题 PHP 服务器环境常见问题指南:快速解决常见难题 Apr 09, 2024 pm 01:33 PM

PHP服务器环境常见的解决方法包括:确保已安装正确的PHP版本和已复制相关文件到模块目录。临时或永久禁用SELinux。检查并配置PHP.ini,确保已添加必要的扩展和进行正确设置。启动或重启PHP-FPM服务。检查DNS设置是否存在解析问题。

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? 在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? Apr 01, 2025 pm 03:06 PM

在Docker环境中使用PECL安装扩展时报错的原因及解决方法在使用Docker环境时,我们常常会遇到一些令人头疼的问�...

php8和php7哪个好 php8和php7哪个好 Nov 16, 2023 pm 03:09 PM

PHP8相较于PHP7在性能、新特性和语法改进、类型系统、错误处理和扩展等方面都有一些优势和改进。然而,选择使用哪个版本要根据具体的需求和项目情况来决定。详细介绍:1、性能提升,PHP8引入了Just-in-Time(JIT)编译器,可以提高代码的执行速度;2、新特性和语法改进,PHP8支持命名参数和可选参数的声明,使得函数调用更加灵活;引入了匿名类、属性的类型声明等等。

See all articles