PHP7之Mongodb API使用详解


Posted in PHP onDecember 26, 2015

编译安装PHP7

编译安装PHP7 Mongdb扩展

#先安装一个依赖库yum -y install openldap-develwget https://pecl.php.net/get/mongodb-1.1.1.tgz /home/server/php7/bin/phpize   #根据自己编译的PHP环境而定./configure --with-php-config=/home/server/php7/bin/php-config make && make install#如果成功,生成一个mongodb.so扩展在lib/php/extensions/no-debug-non-zts-20151012/修改php.ini配置extension=mongodb.so

注:

以前版本用的是mongo.so扩展,老的php-mongodb api
在PHP7已经不支持了,至少目前不支持。
最新支持PHP7的mongodb 编译后 仅支持新版API(mongodb > 2.6.X版本)

参考资料

GITHUB: https://github.com/mongodb/

官网:

http://www.mongodb.org/

PHP官方: https://pecl.php.net/package/mongodb http://pecl.php.net/package/mongo [已废弃,目前只支持到PHP5.9999]

API手册:http://docs.php.net/manual/en/set.mongodb.php

Mongodb API 操作

初始化Mongodb连接

$manager = new MongoDB/Driver/Manager("mongodb://127.0.0.1:27017"); var_dump($manager);
object(MongoDB/Driver/Manager)#1 (3) 
{ 
["request_id"]=> int(1714636915) 
["uri"]=> string(25) "mongodb://localhost:27017" 
["cluster"]=> array(13) {  
["mode"]=>  string(6) "direct"  
["state"]=>  string(4) "born" 
["request_id"]=>  
int(0)  
["sockettimeoutms"]=>  
int(300000)  
["last_reconnect"]=>  
int(0)  
["uri"]=>  
string(25) "mongodb://localhost:27017"  
["requires_auth"]=>  
int(0)  
["nodes"]=>  
array(...)  
["max_bson_size"]=>  
int(16777216)  
["max_msg_size"]=>  
int(50331648)  
["sec_latency_ms"]=>  
int(15)  
["peers"]=>  
array(0) {  
} 
["replSet"]=>  
NULL 
}}

CURL操作

$bulk = new MongoDB/Driver/BulkWrite(['ordered' => true]);$bulk->delete([]);
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 3, 
'hello' => 'world']);$bulk->update(['_id' => 3], 
['$set' => ['hello' => 'earth']]);
$bulk->insert(['_id' => 4, 'hello' => 'pluto']);
$bulk->update(['_id' => 4], ['$set' => ['hello' => 'moon']]);
$bulk->insert(['_id' => 3]);
$bulk->insert(['_id' => 4]);
$bulk->insert(['_id' => 5]);
$manager = new MongoDB/Driver/Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB/Driver/WriteConcern(MongoDB/Driver/WriteConcern::MAJORITY, 1000);
try {  
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} 
catch (MongoDB/Driver/Exception/BulkWriteException $e) 
{  
$result = $e->getWriteResult();  
// Check if the write concern could not be fulfilled  
if ($writeConcernError = $result->getWriteConcernError())
{printf("%s (%d): %s/n",  
$writeConcernError->getMessage(),  
$writeConcernError->getCode(),  
var_export($writeConcernError->getInfo(), true)); 
}  
// Check if any write operations did not complete at all  
foreach ($result->getWriteErrors() as $writeError) {printf("Operation#%d: %s (%d)/n",  
$writeError->getIndex(),  
$writeError->getMessage(),  
$writeError->getCode());  
}} catch (MongoDB/Driver/Exception/Exception $e)
{ 
printf("Other error: %s/n", $e->getMessage());  
exit;}printf("Inserted %d document(s)/n", $result->getInsertedCount());
printf("Updated %d document(s)/n", $result->getModifiedCount());

查询

$filter = array();$options = array(  
/* Only return the following fields in the matching documents */  
"projection" => array("title" => 1,"article" => 1,  ),  
"sort" => array("views" => -1,  ),  "modifiers" => array('$comment'  => "This is a query comment",'$maxTimeMS' => 100,  
),);$query = new MongoDB/Driver/Query($filter, $options);$manager = new MongoDB/Driver/Manager("mongodb://localhost:27017");
$readPreference = new MongoDB/Driver/ReadPreference(MongoDB/Driver/ReadPreference::RP_PRIMARY);$cursor = $manager->executeQuery("databaseName.collectionName", $query, $readPreference);
foreach($cursor as $document) 
{ 
var_dump($document);}

以上内容是小编给大家分享的PHP7之Mongodb API使用详解,希望大家喜欢。

PHP 相关文章推荐
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
实例讲解php数据访问
May 09 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 #PHP
thinkPHP下ueditor的使用方法详解
Dec 26 #PHP
thinkPHP中分页用法实例分析
Dec 26 #PHP
thinkPHP中验证码的简单使用方法
Dec 26 #PHP
分享50个提高PHP执行效率的技巧
Dec 26 #PHP
PHP获取二维数组中某一列的值集合
Dec 25 #PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 #PHP
You might like
10条PHP编程习惯助你找工作
2008/09/29 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
php计算一个文件大小的方法
2015/03/30 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php微信开发之关注事件
2018/06/14 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
js实现常用排序算法
2016/08/09 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
python mysqldb连接数据库
2009/03/16 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
pytorch forward两个参数实例
2020/01/17 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
旷课检讨书1000字
2014/02/14 职场文书
竞聘自述材料
2014/08/25 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
学校运动会广播稿
2014/10/11 职场文书
高三语文复习计划
2015/01/19 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL