php7嵌入,PHP7 连接使用MongoDB API-Fun言

老版本MongoDB扩展是不支持最新的PHP7,因此PHP7以上使用MongoDB,需要下载重新编译支持PHP7的扩展

米扑博客的系统环境

1) lsb_release -a

Description:    CentOS Linux release 7.2.1511 (Core)

2) php -v

PHP 7.2.0 (cli) (built: Dec 12 2017 22:38:54) ( ZTS )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

with Zend OPcache v7.2.0, Copyright (c) 1999-2017, by Zend Technologies

3) mongod --version

db version v3.2.8

1. PHP7 简单插入数据到MongoDB

PHP 代码

$host = '127.0.0.1';

$port = 27817;

$dbname = 'test';

$conn_conf = sprintf("mongodb://%s:%d/%s", $host, $port, $dbname);

$manager = new MongoDB\Driver\Manager($conn_conf);

echo "
manager :
";

var_dump($manager);

$bulk = new MongoDB\Driver\BulkWrite;

$document = ['_id' => new MongoDB\BSON\ObjectID, 'name' => 'mimvp_money'];

$_id= $bulk->insert($document);

echo "
id :
";

var_dump($_id);

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

$result = $manager->executeBulkWrite('test.coll_php7', $bulk, $writeConcern);

echo "
result :
";

var_dump($result);

运行结果:

manager :

object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(41) "mongodb://120.24.177.37:27517/mimvp_money" ["cluster"]=> array(0) { } }

id :

object(MongoDB\BSON\ObjectId)#4 (1) { ["oid"]=> string(24) "5a30f0fd8f32bd1cc70a6d72" }

result :

object(MongoDB\Driver\WriteResult)#6 (9) { ["nInserted"]=> int(1) ["nMatched"]=> int(0) ["nModified"]=> int(0) ["nRemoved"]=> int(0) ["nUpserted"]=> int(0) ["upsertedIds"]=> array(0) { } ["writeErrors"]=> array(0) { } ["writeConcernError"]=> NULL ["writeConcern"]=> object(MongoDB\Driver\WriteConcern)#7 (2) { ["w"]=> string(8) "majority" ["wtimeout"]=> int(1000) } }

从打印结果看,PHP7 MongoDB API 返回的都是object,需要转化成array才可以使用

查看插入的结果:

> use test;

switched to db test

> db.coll_php7.findOne()

{ "_id" : ObjectId("5a30f0fd8f32bd1cc70a6d72"), "name" : "mimvp_money" }

2. PHP7 批量插入数据到MongoDB

PHP 代码

$host = '127.0.0.1';

$port = 27817;

$dbname = 'test';

$conn_conf = sprintf("mongodb://%s:%d/%s", $host, $port, $dbname);

$manager = new MongoDB\Driver\Manager($conn_conf);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(['id' => 81, 'name'=>'money', 'url' => 'https://money.mimvp.com']);

$bulk->insert(['id' => 82, 'name'=>'blog', 'url' => 'https://blog.mimvp.com']);

$bulk->insert(['id' => 83, 'name'=>'site', 'url' => 'https://site.mimvp.com']);

$result = $manager->executeBulkWrite('test.coll_sites', $bulk);

echo "
result :
";

var_dump($result);

运行结果:

result :

object(MongoDB\Driver\WriteResult)#6 (9) { ["nInserted"]=> int(3)["nMatched"]=> int(0) ["nModified"]=> int(0) ["nRemoved"]=> int(0) ["nUpserted"]=> int(0) ["upsertedIds"]=> array(0) { } ["writeErrors"]=> array(0) { } ["writeConcernError"]=> NULL ["writeConcern"]=> object(MongoDB\Driver\WriteConcern)#7 (0) { } }

查看插入的结果:

> db.coll_sites.find()

{ "_id" : ObjectId("5a30f4d18f32bd203f5872b2"), "id" : 81, "name" : "money", "url" : "https://money.mimvp.com" }

{ "_id" : ObjectId("5a30f4d18f32bd203f5872b3"), "id" : 82, "name" : "blog", "url" : "https://blog.mimvp.com" }

{ "_id" : ObjectId("5a30f4d18f32bd203f5872b4"), "id" : 83, "name" : "site", "url" : "https://site.mimvp.com" }

3. PHP7 从MongoDB查询数据

PHP 代码

$host = '127.0.0.1';

$port = 27817;

$dbname = 'test';

$conn_conf = sprintf("mongodb://%s:%d/%s", $host, $port, $dbname);

$manager = new MongoDB\Driver\Manager($conn_conf);

// 批量插入数据

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(['id' => 81, 'name'=>'money', 'url' => 'https://money.mimvp.com']);

$bulk->insert(['id' => 82, 'name'=>'blog', 'url' => 'https://blog.mimvp.com']);

$bulk->insert(['id' => 83, 'name'=>'site', 'url' => 'https://site.mimvp.com']);

$result = $manager->executeBulkWrite('test.coll_sites', $bulk);

// 过滤查询数据

$filter = ['id' => ['$gte' => 82]];

$options = ['projection' => ['_id' => 0],

'sort' => ['id' => -1],

];

$query = new MongoDB\Driver\Query($filter, $options);

$cursor = $manager->executeQuery('test.coll_sites', $query);

// 输出object

// foreach ($cursor as $document) {

// print_r($document);

// }

// object转array (推荐)

foreach ($cursor as $document) {

$doc_array = (array)$document;

$id = $doc_array['id'];

$name = $doc_array['name'];

$url = $doc_array['url'];

$doc_str = sprintf("%d \t %s \t %s", $id, $name, $url);

echo "
$doc_str";

}

运行结果:

这里的运行结果格式,有两种方式

方式1:输出 object

// 输出object

foreach ($cursor as $document) {

print_r($document);

}

查询结果如下:

stdClass Object

(

[id] => 83

[name] => site

[url] => https://site.mimvp.com

)

stdClass Object

(

[id] => 82

[name] => blog

[url] => https://blog.mimvp.com

)

方式2:object转array (推荐)

// object转array (推荐)

foreach ($cursor as $document) {

$doc_array = (array)$document;

$id = $doc_array['id'];

$name = $doc_array['name'];

$url = $doc_array['url'];

$doc_str = sprintf("%d \t %s \t %s", $id, $name, $url);

echo "
$doc_str";

}

查询结果如下:

83 site https://site.mimvp.com

82 blog https://blog.mimvp.com

4. PHP7 更新数据到MongoDB

PHP 代码

$host = '127.0.0.1';

$port = 27817;

$dbname = 'test';

$conn_conf = sprintf("mongodb://%s:%d/%s", $host, $port, $dbname);

$manager = new MongoDB\Driver\Manager($conn_conf);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->update( ['id' => 81],

['$set' => ['name' => 'proxy', 'url' => 'https://proxy.mimvp.com']],

['multi' => false, 'upsert' => false]

);

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

$result = $manager->executeBulkWrite('test.coll_sites', $bulk, $writeConcern);

echo "
result:
";

var_dump($result);

运行结果:

result:

object(MongoDB\Driver\WriteResult)#4 (9) { ["nInserted"]=> int(0) ["nMatched"]=> int(1) ["nModified"]=> int(1)["nRemoved"]=> int(0) ["nUpserted"]=> int(0) ["upsertedIds"]=> array(0) { } ["writeErrors"]=> array(0) { } ["writeConcernError"]=> NULL ["writeConcern"]=> object(MongoDB\Driver\WriteConcern)#5 (2) { ["w"]=> string(8) "majority" ["wtimeout"]=> int(1000) } }

查询结果如下:

> db.coll_sites.find()

{ "_id" : ObjectId("5a30f6ee8f32bd261342b942"), "id" : 81, "name" : "proxy", "url" : "https://proxy.mimvp.com" }

{ "_id" : ObjectId("5a30f6ee8f32bd261342b943"), "id" : 82, "name" : "blog", "url" : "https://blog.mimvp.com" }

{ "_id" : ObjectId("5a30f6ee8f32bd261342b944"), "id" : 83, "name" : "site", "url" : "https://site.mimvp.com" }

5. PHP7 删除 MongoDB 里的数据

PHP 代码

$host = '127.0.0.1';

$port = 27817;

$dbname = 'test';

$conn_conf = sprintf("mongodb://%s:%d/%s", $host, $port, $dbname);

$manager = new MongoDB\Driver\Manager($conn_conf);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->delete(['id' => 81], ['limit' => 1]); // limit=1,删除第一条匹配数据

$bulk->delete(['id' => 82], ['limit' => 0]); // limit=0,删除所有匹配数据

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

$result = $manager->executeBulkWrite('test.coll_sites', $bulk, $writeConcern);

echo "
result:
";

var_dump($result);

运行结果:

result:

object(MongoDB\Driver\WriteResult)#4 (9) { ["nInserted"]=> int(0) ["nMatched"]=> int(0) ["nModified"]=> int(0)["nRemoved"]=> int(2)["nUpserted"]=> int(0) ["upsertedIds"]=> array(0) { } ["writeErrors"]=> array(0) { } ["writeConcernError"]=> NULL ["writeConcern"]=> object(MongoDB\Driver\WriteConcern)#5 (2) { ["w"]=> string(8) "majority" ["wtimeout"]=> int(1000) } }

查询结果如下:

> db.coll_sites.find()

{ "_id" : ObjectId("5a30f6ee8f32bd261342b944"), "id" : 83, "name" : "site", "url" : "https://site.mimvp.com" }

参考推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值