PHP操作MongoDB(详细)

 
想要在 PHP 中使用 MongoDB,您需要为 PHP 安装 MongoDB 的驱动,您可以从 PHP 官网(https://pecl.php.net/package/mongodb)下载最新版的 MongoDB 驱动。下载成功后解压得到的压缩包,并将其中的 php_mongo.dll 文件移动到您的 PHP 扩展目录中(默认为“ext”),然后在您的 PHP 配置文件(php.ini)文件中添加如下内容:

extension = php_mongo.dll

注意:如果您使用的是 phpstudy 之类的集成开发环境,还需要您将 PHP 的安装目录添加到 Path 环境变量中。

建立连接并选择数据库

在 PHP 中若要建立对 MongoDB 的连接,首先需要指定数据库的名称,如果该数据库不存在,MongoDB 将会自动创建它,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "连接数据库成功<br>";
   
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb";
?>
运行结果如下:

连接数据库成功
成功选择数据库 mydb

创建集合

想要在 PHP 中为 MongoDB 创建集合,您可以使用 createCollection() 方法,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "连接数据库成功<br>";
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb<br>";
    $collection = $db->createCollection("mycol");
    echo "集合创建成功";
?>
运行结果如下:

连接数据库成功
成功选择数据库 mydb
集合创建成功

插入文件

要使用 PHP 向 MongoDB 中插入文档您可以使用 insert() 方法,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "数据库连接成功<br>";
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb<br>";
    $collection = $db->mycol;
    echo "集合选择成功<br>";
   
    $document = array(
        "title" => "MongoDB",
        "description" => "database",
        "likes" => 100,
        "url" => "http://www.biancheng.net/mongodb/",
        "by" => "编程帮"
    );
   
    $collection->insert($document);
    echo "文档插入成功";
?>
运行结果如下:

数据库连接成功
成功选择数据库 mydb
集合选择成功
文档插入成功

查找所有文件

要使用 PHP 查找集合中的所有文档,您可以使用 find() 方法,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "连接数据库成功<br>";
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb<br>";
    $collection = $db->mycol;
    echo "集合选择成功<br>";
    $cursor = $collection->find();
    $arr = iterator_to_array($cursor, false);
    // 打印集合中的内容
    echo "<pre>";
    print_r($arr);
?>
运行结果如下:

连接数据库成功
成功选择数据库 mydb
集合选择成功
Array
(
    [0] => Array
        (
            [_id] => MongoId Object
                (
                    [$id] => 603c42fe34f5163c57000029
                )

            [title] => MongoDB
            [description] => database
            [likes] => 100
            [url] => http://www.biancheng.net/mongodb/
            [by] => 编程帮
        )
)

更新文档

要使用 PHP 更新集合中的文档,您可以使用 update() 方法,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "连接数据库成功<br>";
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb<br>";
    $collection = $db->mycol;
    echo "集合选择成功<br>";
    // 更新文档
    $collection->update(array("title"=>"MongoDB"), array('$set'=>array("title"=>"MongoDB教程")));
    echo "文档更新成功<br>";
   
    // 查询更新后的文档
    echo "查询更新后的文档<br>";
    $cursor = $collection->find();
    $arr = iterator_to_array($cursor, false);
    // 打印集合中的内容
    echo "<pre>";
    print_r($arr);
?>
运行结果如下:

连接数据库成功
成功选择数据库 mydb
集合选择成功
文档更新成功
查询更新后的文档
Array
(
    [0] => Array
        (
            [_id] => MongoId Object
                (
                    [$id] => 603c42fe34f5163c57000029
                )

            [title] => MongoDB教程
            [description] => database
            [likes] => 100
            [url] => http://www.biancheng.net/mongodb/
            [by] => 编程帮
        )
)

通过运行结果可以看出,我们成功将文档“title”字段的内容更新为了“MongoDB教程”。

删除文档

要使用 PHP 删除集合中的文档,您可以使用 remove() 方法,示例代码如下:
<?php
    // 连接到 MongoDB
    $m = new MongoClient();
    echo "连接数据库成功<br>";
    // 选择数据库
    $db = $m->mydb;
    echo "成功选择数据库 mydb<br>";
    $collection = $db->mycol;
    echo "集合选择成功<br>";
    // 删除指定文档
    $collection->remove(array("title"=>"MongoDB教程"), array("justOne" => true));
    echo "文档删除成功<br>";

    // 查询更新后的文档
    echo "查询更新后的文档<br>";
    $cursor = $collection->find();
    $arr = iterator_to_array($cursor, false);
    // 打印集合中的内容
    echo "<pre>";
    print_r($arr);
?>
运行结果如下:

连接数据库成功
成功选择数据库 mydb
集合选择成功
文档删除成功
查询更新后的文档
Array
(
)

除了上面示例中介绍的方法外,在 PHP 中您还可以使用其余的 MongoDB 方法,例如 findOne()、save()、limit()、skip()、sort() 等来操作 MongoDB 数据库。

更多的操作方法可以参考 Mongodb 核心类:http://php.net/manual/zh/mongo.core.php