现代 PHP MongoDB 操作指南与实例

慢慢来
慢慢来
发布时间:2026-10-13 | 2人浏览过
原创

在使用 PHP 开发应用时,结合 MongoDB 存储数据是一种常见的架构选择。本文将介绍在现代 PHP 环境中,如何正确安装和使用官方推荐的驱动程序进行数据库操作,并通过具体代码示例展示数据的增、删、改、查流程。

结果或目标

完成在 PHP 项目中对 MongoDB 的连接配置,并实现基础的数据读写功能,包括创建文档、检索匹配记录、更新字段以及移除无用数据。

准备条件

在编写代码之前,需确保环境满足以下条件:

  • PHP 版本:推荐使用 PHP 8.0+,以获得更好的性能和安全支持。
  • 依赖库:必须安装 mongodb/mongodb 包。这是 MongoDB 官方推荐的现代 PHP 驱动程序,替代了已废弃的旧版 mongo PECL 扩展。
  • 启动 Composer:在项目根目录执行以下命令引入驱动:
composer require mongodb/mongodb

注意**:不要使用旧的 new MongoClient() 语法而不配合新命名空间,因为旧版驱动已不再维护,且存在安全隐患与兼容性问题。

真实操作顺序

第1步:建立数据库连接

目的**:初始化客户端对象,建立与 MongoDB 服务器的通信通道。

动作**:使用 MongoDB\Client 类,传入连接字符串(URI)和认证选项。

<?php
require 'vendor/autoload.php';
use MongoDB\Client;

// 替换为你的实际 URI
$uri = "mongodb://localhost:27017";
$client = new Client($uri);
?>

第2步:获取数据库与集合引用

目的**:定位具体的数据存储位置。MongoDB 中“数据库”对应 Database,“表”对应 Collection(集合)。

入口**:$client->selectDatabase('test_db')->

<?php
$database = $client->selectDatabase('my_project_db');
$collection = $database->selectCollection('users');
?>

第3步:插入数据 (Insert)

目的**:向集合中添加一条或多条文档记录。

参数**:需要构造好的关联数组(Associative Array),表示 JSON 文档结构。

<?php
$newUser = [
    'name' => 'Alice',
    'email' => 'alice@example.com',
    'created_at' => new MongoDB\BSON\UTCDateTime(time() * 1000)
];

$result = $collection->insertOne($newUser);
echo "Inserted ID: " . $result->getInsertedId();

// 批量插入多个文档
$usersBatch = [
    ['name' => 'Bob'],
    ['name' => 'Charlie']
];
$insertManyResult = $collection->insertMany($usersBatch);
?>

第4步:查询数据 (Find)

目的**:根据条件检索集合中的文档。

入口**:$collection->find([过滤条件], [投影选项])

重要参数**:

  • sort:排序规则。
  • limit:限制返回数量。
  • skip:跳过前 N 条结果。
<?php
// 查询单条:找到第一个匹配 email 的用户
$foundUser = $collection->findOne(['email' => 'alice@example.com']);
print_r($foundUser);

// 查询多条列表
$filter = ['created_at' => ['$gte' => new MongoDB\BSON\UTCDateTime(1609459200000)]];
$options = [
    'sort'   => ['created_at' => -1], // -1 降序,1 升序
    'limit'  => 10,
];

$cursor = $collection->find($filter, $options);
foreach ($cursor as $user) {
    echo $user['name'] . "\n";
}
?>

第5步:更新数据 (Update)

目的**:修改现有文档的内容。

风险提醒**:更新操作会直接修改磁盘数据,建议先在测试环境中验证筛选条件,避免误删或错改。

动作**:使用 updateOne 或 updateMany,配合 MongoDB 的更新操作符(如 $set)。

<?php
// 将 Alice 的邮箱更新
$updateResult = $collection->updateOne(
    ['name' => 'Alice'],               // 查询条件
    ['$set' => ['email' => 'alice_new@example.com']] // 更新操作:设置新值
);
echo "Matched: " . $updateResult->getMatchedCount() . ", Modified: " . $updateResult->getModifiedCount();

// Upsert:不存在则插入,存在则更新
$upsertResult = $collection->updateOne(
    ['_id' => 'some_specific_id'],
    ['$set' => ['status' => 'active']],
    ['upsert' => true]
);
?>

第6步:删除数据 (Remove)

目的**:从集合中移除文档。

动作**:deleteOne 仅删除第一条匹配项;deleteMany 删除所有匹配项。

<?php
// 删除 Bob
$deleteResult = $collection->deleteOne(['name' => 'Bob']);
echo "Deleted: " . $deleteResult->getDeletedCount() . " document(s).";
?>

简要总结

上述内容是关于在 PHP 8 及以上版本中使用原生 mongodb/mongodb 库进行数据库操作的详细内容。相比早已停更的旧版驱动,新版提供了更清晰的 API、异步支持以及更好的错误处理机制。更多关于高性能 PHP 后端开发的资料,请持续关注我们本站的其他技术文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表