MongoDB在PHP中的常用操作小结


在PHP中使用MongoDB进行常用操作,通常涉及到连接数据库、选择数据库和集合、插入文档、查询文档、更新文档以及删除文档等。这里提供一个简要的小结,介绍这些操作的基本方法。注意,以下示例假设你已经安装了MongoDB扩展(如`mongodb`扩展)在你的PHP环境中。

### 1. 连接到MongoDB


<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
// 对于认证数据库,你可能需要这样:
// $manager = new MongoDB\Driver\Manager("mongodb://username:password@localhost:27017");

### 2. 选择数据库和集合

在MongoDB中,数据库和集合的选择通常在查询或操作时指定,而不是事先选择。但在客户端编程时,通常会明确知道目标数据库和集合。

### 3. 插入文档


<?php
$bulk = new MongoDB\Driver\BulkWrite;
$doc = ['_id' => new MongoDB\BSON\ObjectId, 'name' => 'John Doe', 'age' => 30];
$bulk->insert($doc);

$manager->executeBulkWrite('yourDatabaseName.yourCollectionName', $bulk);

### 4. 查询文档


<?php
$filter = ['name' => 'John Doe'];
$options = [
    'projection' => ['_id' => 0, 'name' => 1], // 仅返回name字段
];

$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('yourDatabaseName.yourCollectionName', $query);

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

### 5. 更新文档


<?php
$filter = ['name' => 'John Doe'];
$update = ['$set' => ['age' => 31]];

$options = ['multi' => false, 'upsert' => false]; // 仅更新一个文档,不插入新文档

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update($filter, $update, $options);

$manager->executeBulkWrite('yourDatabaseName.yourCollectionName', $bulk);

### 6. 删除文档


<?php
$filter = ['name' => 'John Doe'];

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete($filter);

$manager->executeBulkWrite('yourDatabaseName.yourCollectionName', $bulk);

### 注意

- 示例中的`yourDatabaseName`和`yourCollectionName`需要替换为你的实际数据库名和集合名。

- MongoDB PHP驱动(如`mongodb`扩展)提供了更高级的API(如`MongoDB\Client`类),它封装了底层驱动,使得操作更为直观和面向对象。上述示例使用的是底层驱动(`MongoDB\Driver`),主要用于展示如何直接使用驱动进行操作。

- 在实际开发中,建议使用MongoDB PHP库(如`mongodb`扩展提供的面向对象的API)进行开发,因为它提供了更多的便利性和功能。