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 相关文章推荐
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
php常用数组函数实例小结
Dec 29 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
yii2 resetful 授权验证详解
May 18 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
Feb 12 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
深入理解python中sort()与sorted()的区别
2018/08/29 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
Python读写锁实现实现代码解析
2020/11/28 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
python 实现的车牌识别项目
2021/01/25 Python
个人求职信范文分享
2014/01/06 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
公司总经理岗位职责
2014/03/15 职场文书
新手上路标语
2014/06/20 职场文书
供用电专业求职信
2014/07/07 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
Python基础之进程详解
2021/05/21 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python
create-react-app开发常用配置教程
2022/06/25 Javascript