三十五、PHP7 MongDB 扩展安装与使用

2023-05-16

在前面的章节中我们学习了 MongoDB PHP 扩展使用范例,不过那篇文章只能针对 PHP5 使用,PHP7 以上版本则需要使用其它的 PHP MongoDB 扩展

PHP7 Mongdb 扩展安装

假设我们的 PHP7 安装在 /usr/local/php7 目录

我们可以使用 pecl 命令来安装 PHP MongoDB 扩展

$ /usr/local/php7/bin/pecl install mongodb

执行成功后,会输出以下信息

...
Build process completed successfully
Installing '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.1.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini

然后打开 php.ini 文件添加 extension=mongodb.so 配置

或者可以直接执行以下命令来添加

$ echo "extension=mongodb.so" >> `/usr/local/php7/bin/php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

注意: 以上执行的命令中 php7 的安装目录为 /usr/local/php7/,如果你安装在其他目录,需要相应修改 pecl 与 php 命令的路径

PHP7 MongoDB 使用范例

PHP7 连接 MongoDB 数据库

<?php

/*
 * filename: main.php
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


$driver = new MongoDB\Driver\Manager("mongodb://localhost:27017");

PHP7 MongoDB 插入数据

我们可以使用以下代码将 Python 插入到 souyunku 数据库的 language 集合中

<?php

/*
 * filename: main.php
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


$driver = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$document = ['_id' => new MongoDB\BSON\ObjectID, 'name' => 'Python'];

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

var_dump($_id);

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $driver->executeBulkWrite('test.language', $bulk, $writeConcern);

运行以上 PHP7 脚本,输出结果如下

$ php main.php                           
object(MongoDB\BSON\ObjectId)#4 (1) {
  ["oid"]=>
  string(24) "59eef1902a2f950ad3720422"
}

读取数据

我们先将 Perl 、PHPRuby 插入到 language 集合中,然后读取迭代出来

<?php

/*
 * filename: main.php
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


$driver = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(["name"=> "Perl"]);
$bulk->insert(["name"=> "PHP"]);
$bulk->insert(["name"=> "Ruby"]);

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $driver->executeBulkWrite('test.language', $bulk, $writeConcern);


$filter = [];
$options = [
    'projection' => ['_id' => 0],
    'sort' => ['name' => -1],
];

// 查询数据
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $driver->executeQuery('test.language', $query);

foreach ($cursor as $document) {
    print_r($document);
}

运行以上 PHP7 脚本,输出结果如下

$ php main.php
stdClass Object
(
    [name] => Ruby
)
stdClass Object
(
    [name] => Python
)
stdClass Object
(
    [name] => Perl
)
stdClass Object
(
    [name] => PHP
)

更新数据

我们将 PHP 语言改成 PHP7

<?php

/*
 * filename: main.php
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


$driver = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->update(
    ['name' => 'PHP'],
    ['$set' => ['name' => 'PHP7']],
    ['multi' => false, 'upsert' => false]
);

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $driver->executeBulkWrite('test.language', $bulk, $writeConcern);


$filter = [];
$options = [
    'projection' => ['_id' => 0],
    'sort' => ['name' => -1],
];

// 查询数据
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $driver->executeQuery('test.language', $query);

foreach ($cursor as $document) {
    print_r($document);
}

运行以上 PHP7 脚本,输出结果如下

$ php main.php
stdClass Object
(
    [name] => Ruby
)
stdClass Object
(
    [name] => Python
)
stdClass Object
(
    [name] => Perl
)
stdClass Object
(
    [name] => PHP7
)

删除数据

现在我们删除 PHP7 这条数据

<?php

/*
 * filename: main.php
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/


$driver = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;

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

$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $driver->executeBulkWrite('test.language', $bulk, $writeConcern);


$filter = [];
$options = [
    'projection' => ['_id' => 0],
    'sort' => ['name' => -1],
];

// 查询数据
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $driver->executeQuery('test.language', $query);

foreach ($cursor as $document) {
    print_r($document);
}

运行以上 PHP7 脚本,输出结果如下

$ php main.php
stdClass Object
(
    [name] => Ruby
)
stdClass Object
(
    [name] => Python
)
stdClass Object
(
    [name] => Perl
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三十五、PHP7 MongDB 扩展安装与使用 的相关文章

随机推荐

  • 【第六章:常用工具命令】第23节:常用命令 - Linux命令

    大家好 很高兴我们可以继续学习交流Java高频面试题 本小节开始 我们进入了常用工具命令篇章 我们分三个小节来交流常见工具的命令及其作用 包括Linux常用命令 Maven常用命令以及Git常用命令 本小节中 我们主要针对面试中以及日常开发
  • 【第六章:常用工具命令】第24节:常用命令 - Maven命令

    大家好 上一小节中我们主要对Linux常用的命令做了介绍 本小节中 我们对Maven相关知识点以及其常用命令进行交流与学习 Maven是什么 掌握 Maven 是一个跨平台的强大构建工具 可以实现自动化构建过程 从清理 编译 测试 生成报告
  • 【第六章:常用工具命令】第25节:常用命令 - Git命令

    大家好 前面两节我们分别介绍了Linux和Maven的常用命令 本小节中 我们继续介绍版本控制工具Git的相关知识点及其常用命令 Git是一个优秀的版本控制管理工具 可以帮助我们进行代码版本的管理 目前是市场上主流的版本管理工具 如果你拥有
  • 一种灵活的活动中前后端配置数据交互方式

    技术问题 xff1a 在活动中一般会有非常频繁的配置类数据 xff0c 这些数据基本上不包含具体的业务处理逻辑 xff0c 多数是为了前端渲染活动页面使用 传统的前后端交互中 xff0c 往往是前端需要某些配置类数据 xff0c 然后服务端
  • 【第七章:高频算法】第26节:高频面试算法 - 基础(上)

    大家好 很高兴我们可以继续学习交流Java相关面试题目 本小节开始 我们主要进行高频算法题目的讲解 手撕算法 应该算是技术岗位最通用的面试题目了 在各大公司的面试中 有一个最基本的要求 那就是必须写点代码 技术面试一般情况下可以归纳为三大块
  • 【第七章:高频算法】第27节:高频面试算法 - 基础(下)

    大家好 很高兴我们可以继续交流学习算法相关的面试题 在上一小节中 我们主要对排序与查找算法 常见链表以及二叉树的面试题目进行了分析与交流 在本小节中 我们主要对队列 堆栈 字符串与数组等知识点进行交流 针对各个知识点最高频的面试题目来进行解
  • laravel 导出文件乱码解决

    最近做导出功能 xff0c 发现导出的文件名出现乱码 查阅资料发现 xff0c 头部没有统一的编码 xff0c 需要对不同的浏览器做兼容处理 在此记录一下 xff0c 解决方法 xff0c 可以参考一下 修改下载导出的头部信息 functi
  • 【第八章:设计模式】第28节:面试常考设计模式 (上)

    大家好 从本小节开始我们一起交流常用的设计模式 设计模式是一种思想 并不是一门具体的技术 没有很多的工作积累是不可能真正理解设计模式的 本专刊中的设计模式章节 我们重点阐述面试中常见的设计模式的原理与使用 设计模式就是在软件开发过程中所总结
  • 【第八章:设计模式】第29节:面试常考设计模式(下)

    大家好 本小节中我们继续交流学习常见的设计模式 在上一小节中 我们介绍了设计模式的六大原则 并且重点阐述了单例模式的多种写法 单例模式也是为数不多的可以在面试中直接 手撕 的设计模式 除了单例模式外 在面试中考察的其余常见设计模式一般都不会
  • 【第九章:面试分享】第30节:应聘者角度分享面经与面试秘籍

    大家好 非常感谢大家可以和我一起进行交流学习 在前面8个章节中 我竭尽所能的对Java开发岗的常见重要知识点进行了梳理总结 力争用最通俗易懂的语言表达出来 使得大家可以轻松掌握其技术原理 在第九章中 我将进行一些面试分享 本小节中 我将和大
  • 【第九章:面试分享】第31节:面试官角度分享面试与学习方法

    大家好 上一小节我们分享了一些真实的实习和校招面经 并且讲述了作为应聘者如何高效准备和应对面试 本小节 我转变身份 站在面试官的角度来分享总结面试 本小节的主要内容如下 面试中 大多数应聘者是如何表现的 作为面试官的我如何考察应聘者 一些重
  • 【加餐篇:社招分享】第32节:工作两年,大厂社招Offer拿到手软

    大家好 在专刊初版完结多日之后 我们又见面了 本专刊的主题是Java开发岗位高频面试题解析 力争从多个知识模块上进行总结 以一种全而精的方式来给大家介绍相关知识点以及其实现原理 回答话术等 相信本专刊对于大家的学习与面试都有一个很大的帮助
  • Git:一文阐述常见命令的使用

    前言 为什么写这篇Git文章 xff1f 在日常的需求开发中 xff0c 发现部分同学不太熟悉Git命令 xff0c 往往是通过idea自带的一些工具来执行简单的Git命令 xff0c 遇到一些突发问题的时候 xff0c 往往不知所措 简单
  • 一种通用的静态资源发布方法

    技术问题 xff1a 在日常的用户页面中 xff0c 往往会存在一些常见问题页面 常见问题页面一般情况下分类 分条目的阐述当前用户侧容易遇到的一些问题 一般情况下 xff0c 问题会比较固定 xff0c 其对应的回答或者解释也比较固定 xf
  • 【回归贴】同志们,阔别三年,我回来啦~

    背景 熟悉的感觉 xff0c 接近三年没有好好写博客了 xff0c 因为各种各样的事情吧 在20年初跳槽到当前公司后 xff0c 因为工作繁忙等各种原因 xff0c 我几乎要放弃了写作 但是 xff0c 人不可能一直呆在舒适圈 xff0c
  • Java同步集合synchronizedX中的迭代器Iterator使用,为什么需要使用者加锁?

    xff08 尊重劳动成果 xff0c 转载请注明出处 xff1a https yangwenqiang blog csdn net article details 129472842冷血之心的博客 xff09 前言 大家好 xff0c 我是
  • 从帝王之术中窥探天机

    前言 闲来无事 xff0c 过年期间追上了一部古老的大型古装历史电视连续剧 朱元璋 xff0c 由冯小宁执导 xff0c 胡军 剧雪 郑晓宁 鄂布斯等主演的历史题材电视剧 曾经看过陈道明主演的 康熙王朝 xff0c 也看过唐国强主演的 雍正
  • Gin框架 ShouldBindJSON详解

    为什么第二次使用ShouldBindJSON就失效了呢 今天debug看了下 xff0c 主要是 http Request的io buffer第一次取完之后 xff0c http body 结构体中的sawEOF 61 true 第二次去读
  • linux c语言 线程资源释放

    最近做了多线程并发网络编程的时候出现了一个问题 程序在运行的过程中 占用的内存会越来越大 起初我怀疑是程序有指针没有被 free 导致内存泄漏 在查代码的过程中我发现 xff0c 我并没有手动收回创建的线程资源 通过上网查阅linux线程资
  • 三十五、PHP7 MongDB 扩展安装与使用

    在前面的章节中我们学习了 MongoDB PHP 扩展使用范例 xff0c 不过那篇文章只能针对 PHP5 使用 xff0c PHP7 以上版本则需要使用其它的 PHP MongoDB 扩展 PHP7 Mongdb 扩展安装 假设我们的 P