php7 mongodb 使用(一) 识别三种类型

最近的工作和mongodb相关,恶补了各种姿势,踩了了很多坑。
一,分清楚三种 mongodb

1,php5时代的mongodb,标志特征  MongoClient()对象。
示例  

$m = new MongoClient(); // 连接默认主机和端口为:mongodb://localhost:27017
$db = $m->test; // 获取名称为 "test" 的集合
$db->selectdb('test');  //查询集合

更多操作 参考网址  https://www.runoob.com/mongodb/mongodb-php.html
如果你还在php5的泥坑,无法超度自己到 php7,就此打住。别往下看了。

2,php7时代的mongodb Driver,这个是原生驱动,标志特征 Manager

php7安装mongodb的扩展后直接 use引入几个关键文件

use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\Manager;
use MongoDB\Driver\Query;
use MongoDB\Driver\Command;
use MongoDB\Driver\WriteConcern;
use MongoDB\BSON\UTCDateTime;

数据库连接

public $manager;
protected function manager()
    {
        if ($this->manager instanceof Manager) {
            return $this->manager;
        }
        $uri = 'mongodb://'.env('MONGODB_USER').':'.env('MONGODB_PASS').'@'.env('MONGODB_HOST').':'.env('MONGODB_PORT').'/'.env('MONGODB_DB');

        return $this->manager = new Manager($uri, []);
    }

后面直接使用 
$this->manager()->executeBulkWrite();
$this->manager()->executeQuery();
$this->manager()->executeCommand();

这几个方法完成所有的 增删改查 所有操作操作。
优点  高度封装,所有参数都是对象,性能效率也最高。
缺点也很明显。参数复杂,新手很难搞定。
当年mongodb是一心要做大数据工具。对最初版的,php5时代的驱动代码应该是不满意。虽然操作简单,但是是性能平平。
好不容易赶上php7大版本升级,一心要搞大数据高性能的整出了这个,性能优先的驱动。但是步子跨的大了容易扯着DD。
对老版本代码的不兼容也让mongodb始终无法像mysql一样加入到php的原生驱动里面,只能以pcel扩展的形式当备胎。

php5时代的的使用者也是吐槽不满意。
心比天高的mongodb于是只能妥协,又搞了一个 mongodb library;

3, php7下的 mongodb library 类库  

安装之前记得安装 mongodb扩展
github地址
https://github.com/mongodb/mongo-php-library

使用composer安装
composer require mongodb/mongodb
安装完成后 项目 vendor目录下新增  mongodb 目录 文件总计4.39MB
使用  ls -lR|grep "^-"|wc -l 命令统计了文件个数(包含子目录)总计827个。
这是闹着玩的呀,都赶上常见的php框架了。这么多文件,性能靠谱吗,这是走火入魔了呀,从一个极端走向另一个极端呀。
这个类库,没有继续深入研究。

总结
从网上搜索 mongodb的使用方法,请一定要自己判断是那一种类型。如果类型不对肯定会出错的。

下一个章我将第二种类型 php7 原生驱动的使用中的详细细节。



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hangbobo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值