🎬 HoRain 云小助手个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

🔧 一、安装 MongoDB PHP 扩展

​​1. 使用 PECL 安装(推荐)​​

​​2. 手动编译安装(可选)​​

​​3. 验证安装​​

📦 二、安装 MongoDB PHP 库(可选但推荐)

🔌 三、连接 MongoDB 数据库

💽 四、基本操作示例

​​1. 使用底层驱动(MongoDB\Driver)​​

​​2. 使用 MongoDB PHP 库(MongoDB\Client)​​

⚠️ 五、注意事项与常见问题

💎 总结


安装和使用 MongoDB PHP 扩展是连接 PHP7 与 MongoDB 数据库的关键步骤。以下是基于官方推荐和实践总结的详细指南。

🔧 一、安装 MongoDB PHP 扩展

PHP7 及以上版本需使用 mongodb 扩展(通过 PECL 安装),其替代了旧版 mongo 扩展。

​1. 使用 PECL 安装(推荐)​

​Linux/macOS 系统​​下,在终端执行:

sudo pecl install mongodb

安装成功后,在 php.ini 文件中添加配置以启用扩展:

extension=mongodb.so

​Windows 系统​​需手动下载与 PHP 版本、架构(x86/x64)及线程安全(TS/NTS)匹配的 .dll 文件,将其放入 PHP 的 ext 目录,并在 php.ini 中添加:

extension=php_mongodb.dll
​2. 手动编译安装(可选)​

若环境无法使用 pecl,可手动编译:

wget https://pecl.php.net/get/mongodb-1.15.0.tgz  # 请替换为最新稳定版本
tar -zxvf mongodb-1.15.0.tgz
cd mongodb-1.15.0
phpize
./configure
make && make install

编译成功后,同样需在 php.ini 中配置 extension=mongodb.so

​3. 验证安装​

安装并重启 Web 服务器(如 Apache、Nginx)或 PHP-FPM 后,通过以下命令验证:

php -m | grep mongodb

或创建 PHP 文件查看 phpinfo(),搜索 “mongodb”,确认扩展已启用。

📦 二、安装 MongoDB PHP 库(可选但推荐)

官方提供的 mongodb/mongodb PHP 库封装了底层驱动,提供了更友好的面向对象 API。使用 Composer 安装:

composer require mongodb/mongodb

此库非必须,但能简化开发。

🔌 三、连接 MongoDB 数据库

在 PHP 代码中,使用 MongoDB\Driver\Manager 类进行连接:

<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
?>

若需认证,连接字符串格式为 "mongodb://username:password@host:port"

若使用了 Composer 库,连接方式更直观:

<?php
require 'vendor/autoload.php'; // 引入 Composer 自动加载
$client = new MongoDB\Client("mongodb://localhost:27017");
?>

💽 四、基本操作示例

​1. 使用底层驱动(MongoDB\Driver)​

这是更底层的操作方式。

  • ​插入文档​​:
    $bulk = new MongoDB\Driver\BulkWrite;
    $document = ['name' => '菜鸟教程', 'age' => 30];
    $id = $bulk->insert($document);
    $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('db_name.collection_name', $bulk, $writeConcern);
  • ​查询文档​​:
    $filter = ['name' => '菜鸟教程'];
    $options = [];
    $query = new MongoDB\Driver\Query($filter, $options);
    $cursor = $manager->executeQuery('db_name.collection_name', $query);
    foreach ($cursor as $document) {
        var_dump($document);
    }
  • ​更新文档​​:
    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->update(
        ['name' => '菜鸟教程'],
        ['$set' => ['age' => 31]],
        ['multi' => false, 'upsert' => false]
    );
    $result = $manager->executeBulkWrite('db_name.collection_name', $bulk);
  • ​删除文档​​:
    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->delete(['name' => '菜鸟教程']);
    $result = $manager->executeBulkWrite('db_name.collection_name', $bulk);
​2. 使用 MongoDB PHP 库(MongoDB\Client)​

此方式语法更简洁,更接近 MongoDB Shell 的体验。

  • ​选择数据库和集合​​:
    $database = $client->selectDatabase('my_database');
    $collection = $database->selectCollection('my_collection');
    // 或更简洁
    $collection = $client->my_database->my_collection;
  • ​插入文档​​:
    $result = $collection->insertOne(['name' => 'John', 'age' => 30]);
    echo "插入的文档 ID: " . $result->getInsertedId();
  • ​查询文档​​:
    $result = $collection->findOne(['name' => 'John']);
    var_dump($result);
    $cursor = $collection->find(['age' => ['$gt' => 25]]);
    foreach ($cursor as $document) {
        var_dump($document);
    }
  • ​更新文档​​:
    $result = $collection->updateOne(
        ['name' => 'John'],
        ['$set' => ['age' => 31]]
    );
    echo "匹配了 " . $result->getMatchedCount() . " 个文档,修改了 " . $result->getModifiedCount() . " 个文档";
  • ​删除文档​​:
    $result = $collection->deleteOne(['name' => 'John']);
    echo "删除了 " . $result->getDeletedCount() . " 个文档";

⚠️ 五、注意事项与常见问题

  1. ​版本兼容性​​:确保下载的扩展版本与你的 PHP 版本、线程安全(TS/NTS)和架构(x86/x64)完全匹配。不匹配会导致 PHP 无法加载扩展。
  2. ​修改配置后重启服务​​:​​每次修改 php.ini 后,必须重启 Web 服务器(如 Apache、Nginx)或 PHP-FPM 进程​​,更改才会生效。
  3. ​权限问题​​:在 Linux/macOS 系统下,运行 Web 服务器的用户需要对扩展文件有读取权限。连接 MongoDB 时,确保使用的数据库账号拥有执行相应操作的权限(如 readWrite, dbAdmin 等角色)。
  4. ​连接字符串​​:若 MongoDB 服务器不在本地或端口非默认,需相应修改连接字符串中的主机和端口。副本集或分片集群需使用更复杂的连接字符串。
  5. ​错误处理​​:在生产环境中,建议使用 try...catch 块捕获并处理可能出现的 MongoDB\Driver\Exception\Exception 异常。
  6. ​性能考量​​:对于大量数据的写入操作,使用 BulkWrite 对象进行批量操作通常比单条插入效率更高。

💎 总结

为在 PHP7 中使用 MongoDB:

  1. 通过 ​​PECL​​ 安装 mongodb 扩展,或在 Windows 手动配置,并在 php.ini 中启用。
  2. 使用 ​MongoDB\Driver\Manager​ 进行底层连接和操作,或使用 Composer 安装 ​mongodb/mongodb​ 库以获得更高级的抽象。
  3. 操作时注意​​版本兼容性​​、​​权限​​和​​错误处理​​。

遵循以上步骤,你应能成功在 PHP7 环境中集成 MongoDB 并进行基本的数据操作。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐