MongoDB PHP 集成
MongoDB 提供了 PHP 驱动程序,允许我们在 PHP 应用程序中与 MongoDB 进行交互。通过 PHP 驱动程序,我们可以执行各种操作,如插入、查询、更新和删除数据等。
基本概念
PHP 驱动程序的类型
- MongoDB PHP Driver: 官方提供的 PHP 驱动程序。
- MongoDB ODM: 基于 MongoDB PHP Driver 的对象文档映射器,提供了更高级的 API。
在本章节中,我们将使用官方提供的 PHP 驱动程序。
连接到 MongoDB
要连接到 MongoDB,我们需要使用 MongoDB\Client 类。
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
// 连接到 MongoDB 服务器
$client = new Client('mongodb://localhost:27017');
// 获取数据库
$database = $client->mydatabase;
echo "Connected to database successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>插入数据
插入单个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 创建文档
$document = [
'name' => 'John',
'age' => 30,
'email' => 'john@example.com',
'status' => 'active'
];
// 插入文档
$collection->insertOne($document);
echo "Document inserted successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>插入多个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 创建文档列表
$documents = [
[
'name' => 'Jane',
'age' => 25,
'email' => 'jane@example.com',
'status' => 'pending'
],
[
'name' => 'Bob',
'age' => 35,
'email' => 'bob@example.com',
'status' => 'inactive'
]
];
// 插入文档列表
$collection->insertMany($documents);
echo "Documents inserted successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>查询数据
查询所有文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 查询所有文档
$documents = $collection->find();
// 遍历结果
foreach ($documents as $document) {
var_dump($document);
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>查询特定文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 查询特定文档
$filter = ['name' => 'John'];
$documents = $collection->find($filter);
// 遍历结果
foreach ($documents as $document) {
var_dump($document);
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>更新数据
更新单个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\Manager;
use MongoDB\Driver\Query;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 更新单个文档
$filter = ['name' => 'John'];
$update = ['$set' => ['age' => 31]];
$collection->updateOne($filter, $update);
echo "Document updated successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>更新多个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 更新多个文档
$filter = ['status' => 'active'];
$update = ['$set' => ['status' => 'pending']];
$collection->updateMany($filter, $update);
echo "Documents updated successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>删除数据
删除单个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 删除单个文档
$filter = ['name' => 'Bob'];
$collection->deleteOne($filter);
echo "Document deleted successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>删除多个文档
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 删除多个文档
$filter = ['status' => 'pending'];
$collection->deleteMany($filter);
echo "Documents deleted successfully";
} catch (Exception $e) {
echo $e->getMessage();
}
?>查询进阶
使用查询操作符
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 使用查询操作符
$filter = [
'$and' => [
['age' => ['$gt' => 25]],
['status' => 'active']
]
];
$documents = $collection->find($filter);
// 遍历结果
foreach ($documents as $document) {
var_dump($document);
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>排序和分页
php
<?php
require 'vendor/autoload.php';
use MongoDB\Client;
try {
$client = new Client('mongodb://localhost:27017');
$database = $client->mydatabase;
$collection = $database->mycollection;
// 排序和分页
$documents = $collection->find(
[],
[
'sort' => ['age' => -1],
'skip' => 1,
'limit' => 2
]
);
// 遍历结果
foreach ($documents as $document) {
var_dump($document);
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>总结
MongoDB PHP 驱动程序允许我们在 PHP 应用程序中与 MongoDB 进行交互。通过 PHP 驱动程序,我们可以执行各种操作,如插入、查询、更新和删除数据等。在使用 PHP 驱动程序时,我们应该注意连接管理、数据处理和错误处理等方面的问题,以确保应用程序的高效运行。