Mongodb API怎么在PHP7项目中使用

编译安装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);}

原创文章,作者:PPRJR,如若转载,请注明出处:http://www.wangzhanshi.com/n/8313.html

(0)
PPRJR的头像PPRJR
上一篇 2025年1月1日 16:43:01
下一篇 2025年1月1日 16:43:03

相关推荐

  • PHP5.5至PHP7.2 新特性有哪些

    一、从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括…

    php 2025年1月1日
  • php7连接mysql失败的解决方法

    php7连接mysql失败是因为php7已经摒弃了mysql_connect函数,其解决办法:1、使用mysqli_connect()函数连接;2、使用面向对象的方法连接mysql…

    php 2025年1月1日
  • PHP7的新增特性

    这篇文章主要为大家分享PHP7的新增特性。文中还介绍了PHP7的应用场景以及使用方法,希望大家通过这篇文章能有所收获。 PHP可以解决高并发,也不能说适合,只是相对其他语言弱一些,…

    php 2025年1月1日
  • php7下dedecms的常见问题以及解决方法

    一、 无法获取错误信息,一片空白 一片空白是无法调试的, 所以要做的第一件事, 能够输出错误信息。 打开 include/common.inc.php 找到下面的代码 //erro…

    php 2025年1月1日
  • php使用PhpSpreadsheet导出Excel表格的实例详解

    PhpSpreadsheet介绍 1、简介 PhpSpreadsheet 是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式 PhpSpreadshe…

    2024年12月17日
  • php7连接数据库的方式有哪些

     使用原生PHP来连接MySQL的方法有MySQL库、MySQLi库以及PDO,由于PHP 7已经废除MySQL库,所以建议使用MySQLi和PDO。 连接MySQLi有…

    php 2025年1月1日
  • centos 6.8 安装编译php7.1.2

    安装必要的工具 rpm -qa|grep libxml2 查看下工具是不是有装 yum list | grep libxml2 yum install libxml2-devel&…

    2025年1月1日
  • ECshop迁移到PHP7版本时不兼容怎么办

    在 PHP7 上安装 ECShop V2.7.3时,报错! Deprecated: Methods with the same name as their class will n…

    2025年1月1日
  • 使用PHP实现远程控制三路开关

    怎样用PHP语言实现远程控制三路开关呢? 本文描述了使用PHP语言调用HTTP接口,实现控制三路开关,三路开关可控制三路照明、排风扇等电器。 可选用产品:可根据实际场景需求,选择对…

    2024年12月17日
  • PHP内存溢出的原因和解决方案

    前言 PHP作为一种广泛使用的服务器端脚本语言,常常用于处理动态内容和构建Web应用程序。然而,在开发和执行PHP代码时,开发者常常会面临一些常见的问题之一—&mdas…

    php 2024年12月17日

发表回复

登录后才能评论