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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
Search Engine Friendly的URL设计
Oct 09 PHP
php错误、异常处理机制(补充)
May 07 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
PHP实现简单计算器小程序
Aug 28 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 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
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python isinstance判断对象类型
2008/09/06 Python
python的Tqdm模块的使用
2018/01/10 Python
有关Python的22个编程技巧
2018/08/29 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python实现飞机大战小游戏
2019/11/08 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
社区健康教育实施方案
2014/03/18 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
抗震救灾标语
2014/06/26 职场文书
项目建议书
2015/02/04 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
三国演义读书笔记
2015/06/25 职场文书
小学运动会加油稿
2015/07/22 职场文书
python某漫画app逆向
2021/03/31 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js