MongoDB PHP 扩展


MongoDB PHP 扩展技术文档

简介

MongoDB PHP 扩展(简称 mongo 扩展)是 MongoDB 官方提供的 PHP 数据库驱动程序,可以和 PHP 语言集成,方便地操作 MongoDB 数据库。使用 mongo 扩展,可以在 PHP 中进行 MongoDB 的 CRUD 操作和聚合查询等操作。

安装

安装必要前置

在安装 mongo 扩展之前,需要确保已安装了以下软件:

  • PHP 版本 7.0 以上,支持 MongoDB 的版本需求。
  • 一个 MongoDB 数据库实例。

下载与编译

可以在 PHP 的 PECL 仓库中下载最新版本的扩展,也可以从 MongoDB 的 GitHub 仓库中下载安装包。

PECL 安装:

pecl install mongo

手动安装:

git clone https://github.com/mongodb/mongo-php-driver.git
cd mongo-php-driver
phpize
./configure
make all -j 4
sudo make install

使用

建立连接

在 PHP 中,可以通过MongoClient类来建立一个 MongoDB 数据库连接,例如:

$m = new MongoClient(); // 建立连接

参数配置:

参数 描述
host MongoDB数据库实例所在主机地址
port MongoDB数据库实例连接端口
username MongoDB数据库实例账号用户名
password MongoDB数据库实例账号密码
authSource MongoDB数据库实例授权数据库
connect 是否异步连接,如果开启,则会立刻返回一个MongoClient实例对象,并在后续操作中连接数据库
readPreference 读操作偏好设置

例如:

$mongoClient = new MongoClient(
    "mongodb://user:password@localhost:27017/?authSource=admin",
    [
        "connect" => TRUE,
        "readPreference" => MongoClient::RP_SECONDARY_PREFERRED,
    ]
);

选择数据库和集合

建立连接之后,可以通过MongoClient类的 selectDBselectCollection方法选择数据库和集合,例如:

$db = $m->selectDB("mydb"); // 选择数据库
$collection = $db->selectCollection("users"); // 选择集合

插入数据

MongoDB 数据库使用 JSON 文档保存数据。可以通过MongoCollection类的insert方法来插入数据,例如:

$document = array( "name" => "MongoDB", "type" => "database", "count" => 1 );
$collection->insert($document);

更新数据

可以通过MongoCollection类的update方法来更新数据,例如:

$collection->update(
    array("name" => "MongoDB"),
    array('$set' => array("count" => 99))
);

删除数据

可以通过MongoCollection类的remove方法来删除数据,例如:

$collection->remove(array("name" => "MongoDB"));

查询数据

可以通过MongoCollection类的find方法来查询数据,例如:

$cursor = $collection->find();
foreach ($cursor as $doc) {
    var_dump($doc);
}

聚合查询

可以通过MongoCollection类的aggregate方法进行聚合查询,例如:

$pipeline = array(
    array(
        '$match' => array('status' => 'A')
    ),
    array(
        '$group' => array(
            '_id' => '$cust_id',
            'total' => array('$sum' => '$amount')
        )
    ),
    array(
        '$sort' => array('total' => -1)
    ),
    array(
        '$limit' => 3
    )
);
$result = $collection->aggregate($pipeline);

总结

以上是关于 MongoDB PHP 扩展的学习笔记,mongo 扩展提供了一系列简便的数据库操作方法,可以轻松地完成 MongoDB 数据库的 CRUD 操作和聚合查询等功能。