php的mongodb拓展有两个,一个是老版本的已经废弃mongo,一个是现在新版本的mongodb
目前网上的不少资料还是老版本的拓展,已经不适应当前的开发应用环境
这个mongodb的php扩展是mongodb官方提供的,放心使用,个人感觉拓展的质量很高
以下演示的版本为1.17.0(2023年11月版本)
如果没有安装php,这是编译安装的博客链接: php8编译安装
php官方拓展查询下载: pecl官网
mongodb拓展支持的mongodb的版本查看:mongodb拓展支持版本
搜索mongo扩展有两个,第一个已经不维护了,不要下载,除非你的php版本特别老
第二个是第一个的升级版,无论调用方式还是数据结构都明显优化过了
1.下载php-mongodb扩展
cd /usr/local
下载压缩包(如果下载过慢,建议使用下载工具下载后上传)
wget http://pecl.php.net/get/mongodb-1.17.0.tgz
解压进入目录
tar -zxvf mongodb-1.17.0.tgz && cd mongodb-1.17.0
2.编译安装
以下位置取决于你的php安装位置,如果是按照我的安装方式,就是这里
/usr/local/php/bin/phpize
编译
./configure --with-php-config=/usr/local/php/bin/php-config
编译安装
make && make install
安装成功后提示如下(也有可能是别的)
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20210902/
3.设置php.ini
vi /usr/local/php/lib/php.ini
添加
extension=mongodb.so
4.重启php-fpm并查看安装的插件
systemctl restart php-fpm
php -m
可以看到有mongodb的
5.php脚本中连接mongodb和操作示例
以下示例为简单演示,实际开发使用建议封装成class使用。
以下代码功能,插入一条记录,包含当前时间和一个字段
$manager = new MongoDB\Driver\Manager('mongodb://'.$this->ip.':'.$this->port);
$bulk = new MongoDB\Driver\BulkWrite;
//数据库和集合名称
$database='abc';
$collection='jh';
//当前的时间戳作为字段之一(建议每个记录都默认插入)
$now=new MongoDB\BSON\UTCDateTime(microtime(true)*1000);//包含毫秒数
$arr=[
"datetime"=>$now,
"aaa"=>'123456',
];
$bulk->insert($arr);
//可选,修改确认
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
//插入成功,返回ture
$result=$manager->executeBulkWrite($database.'.'.$collection, $bulk, $writeConcern);
6.其它
mongodb的数据结构有很多,这些数据结构都是用类似MongoDB\BSON\UTCDateTime的类来构建的,直接插入都会被当成字符串,想必这也不是大家想要的。另外有些数据结构比如array,在php和Mongodb中都有,无需用类新建结构,直接使用即可。
目前php操作mongodb的教程较少,建议使用ide点开看源码。
和早期版本的mongo插件的函数完全不一样,不要照抄老版本的