您的位置:

php的mongodb扩展,php+mongodb

本文目录一览:

php7 mongodb 扩展 真的很差吗

MongoDB\Driver\Manager::executeBulkWrite

这玩意还配置了一个巨大的类库来配合调用:就是这个: ,纯粹是脱裤子放P,多此一举,本来原生扩展就已经巨长、巨难用,还配一个根本没有简化任何代码的库有什么意义?甚至于调用这个类库比原生的名字更长、更啰嗦,而且多了一层封装就多一次bug机会。

这个库文件总共63个,看看,如果你随便写个脚本访问一下mongodb,还得包含63个文件,我TM整个项目都没有63个文件好不好?这些个写惯了java的没事就老老实实写java,都跑来写php,php是要解析执行的,又不像jvm那么编译优化执行,搞那么多文件,不影响执行速度吗?真是狗屎,所以完全不推荐用这个狗屎库。

但是这个扩展最奇怪的就是文档超级简陋,根本不能获得任何有价值的信息,所以只能靠摸索来了。

下面是我用到的由MongoClient迁移到MongoDB\Driver的差异点。

MongoClient插入或更新是同样的代码:

(new MongoClient())-{$db}-{$collection}-save($arr);

// 这个$arr数组可以直接含有 "_id" 索引来指定 mongodb文档的_id值,就这么简单粗暴,这才是php啊!

MongoDB\Driver,插入和更新需要区分:

$mongo = new MongoDB\Driver\Manager();

$bulk = new MongoDB\Driver\BulkWrite(['ordered' = true]);

$data = $mongo-executeQuery('db.collection', new MongoDB\Driver\Query([]), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED))-toArray();

if (empty($data[0])) { // 确定不存在,插入

$bulk-insert($arr);

} else { // 否者更新

$bulk-update([], array('$set' = $arr)); // $arr同样是刚才的数组

}

// 还没完,还要执行下一步:db.collection要替换成实际的数据库、集合名

$result = $mongo-executeBulkWrite('db.collection', $bulk, new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000));

// 返回插入或更新是否成功:

$ok = $result-getInsertedCount() || $result-getModifiedCount() ? 1 : 0;

// 真是够了!

查询一条记录:

MongoClient:

(new MongoClient())-{$db}-{$collection}-findOne(['_id' = $id]);

MongoDB\Driver:

$mongo = new MongoDB\Driver\Manager();

$result = $mongo-executeQuery('db.collection', new MongoDB\Driver\Query(['_id'=$id], []), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));

// 返回的$result是一个对象,需要手动转换成数组。

查询数量时候,需要注意:

$mongo = new MongoDB\Driver\Manager();

$cursor = $mongo-executeCommand($db, new MongoDB\Driver\Command($arr), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));

// 这里$cursor是一个游标。需要注意$arr里的字段:

$arr = ['count'=$collection, 'query'=$query]; // 这里count必须排在前面,位置反了直接报异常。

查询结果集:

$mongo = new MongoDB\Driver\Manager();

$cursor = $mongo-executeQuery('db.collection', new MongoDB\Driver\Query($arr, $opts), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));

//注意,这里的 $arr和 $opts;

$arr = ['_id'= ['$in'= $ids] ]; // 根据id数组获取集合

$opts = ['limit'= $limit, 'skip'= $skip ]; // 不推荐

// 这里在传递$limit和$skip的时候,最好先转成整数,不然不生效:

$opts = ['limit'= (int) $limit, 'skip'= (int) $skip ]; // 推荐写法。

// 写到这里,让人怀疑是不是在用php了,怎么还需要这样的类型转换。字符串整数都不行!

基本就这样,推荐自己封装一个简单的MongoDB\Driver,而不是使用那个巨大无比的库、也不推荐直接用原生

如何使用brew安装php的mongodb扩展

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB的数据存储上,感觉有点想关系型数据库中的key=value的数据格式。

和memcache或者redis差不多,mongodb也是分服务端和客户端的(相对)。用brew 来安装的话是非常方便的。

遇到类似的问题,你可以去后盾人平台看看的哦,里面的东西不错应该能帮你解决一些不明白的问题(❁´◡`❁)*

php7.3.4连接MongoDB2.2.2用哪个版本的扩展呢?

首先进入pecl(PHP Extension Community Library)网站;

搜索mongodb扩展;

点击版本,查看支持的php版本

4.下载扩展

php怎样测试是否安装成功mongdb扩展

1、在windows环境下,我们的软件安装在C盘,当然用户也可以安装在其他磁盘,和Java一样。小编以默认地址为例,首先是如何运行我们的数据库,打开cmd,输入cd C:\Program Files\MongoDB\Server\3.2\bin,回车;在输入C:\Program Files\MongoDB\Server\3.2\bin\mongod即可运行我们的数据库服务。

2、如果用户不想每次开机都运行,那么可以修改环境变量,这样一开机即可开始服务。

3、然后找到path变量,修改变量值,添加C:\Program Files\MongoDB\Server\3.2\bin,记住这里有许多变量值需要使用“;”隔开。

php 怎么进入mongodb

在Linux、window、Mac平台上安装MongoDB扩展

Linux上安装 MongoDB PHP扩展

在终端上安装

可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动

$ sudo pecl install mongo

使用php的pecl安装命令必须保证网络连接可用以及root权限。

安装手册

如果想通过源码来编译扩展驱动。必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。

可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索"mongo php driver"(下载地址:),下载该源码包,然后执行以下命令:

$ tar zxvf mongodb-mongodb-php-driver-commit_id.tar.gz

       $ cd mongodb-mongodb-php-driver-commit_id

       $ phpize

       $ ./configure

       $ sudo make install

如果php是编译的,则安装方法如下(假设是编译在/usr/local/php目录中):

$ tar zxvf mongodb-mongodb-php-driver-commit_id.tar.gz

       $ cd mongodb-mongodb-php-driver-commit_id

       $ /usr/local/php/bin/phpize

       $ ./configure --with-php-config=/usr/local/php/bin/php-config

       $ sudo make install

执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:

extension=mongo.so

注意:你需要指明 extension_dir 配置项的路径。

window上安装 MongoDB PHP扩展

Github上已经提供了用于window平台的预编译php mongodb驱动二进制包(下载地址:),可以下载与php对应的版本,但是需要注意以下几点问题:

VC6 是运行于 Apache 服务器

'Thread safe'(线程安全)是运行在Apache上以模块的PHP上,如果以CGI的模式运行PHP,请选择非线程安全模式(' non-thread safe')。

VC9是运行于 IIS 服务器上。

下载完需要的二进制包后,解压压缩包,将'php_mongo.dll'文件添加到PHP扩展目录中(ext)。ext目录通常在PHP安装目录下的ext目录。

打开php配置文件 php.ini 添加以下配置:

extension=php_mongo.dll

重启服务器。

通过浏览器访问phpinfo,如果安装成功,就会看到类型以下的信息:

MAC中安装MongoDB PHP扩展驱动

你可以使用'autoconf'安装MongoDB PHP扩展驱动。

你可以使用'Xcode'安装MongoDB PHP扩展驱动。

如果使用 XAMPP,可以使用以下命令安装MongoDB PHP扩展驱动:

sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo

如果以上命令在XMPP或者MAMP中不起作用,需要在Github上下载兼容的预编译包。

然后添加 'extension=mongo.so'配置到php.ini文件中。