php 添加支持mongodb扩展及简单应用

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插件的函数完全不一样,不要照抄老版本的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziqibit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值