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的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php获取目标函数执行时间示例
Mar 04 PHP
thinkphp模板继承实例简述
Nov 26 PHP
php运行时动态创建函数的方法
Mar 16 PHP
PHP中的traits简单使用实例
May 13 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
Sep 18 PHP
PHP-FPM 的管理和配置详解
Feb 17 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
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
php引用传值实例详解学习
2013/11/06 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
使用SAE部署Python运行环境的教程
2015/05/05 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python匿名函数的使用方法解析
2019/10/10 Python
Python与C/C++的相互调用案例
2021/03/04 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
超市促销活动方案
2014/03/05 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
政风行风整改方案
2014/10/25 职场文书
学生会招新宣传语
2015/07/13 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫