Docs 菜单
Docs 主页
/ / /
PHP 库手册

数据库和集合

在此页面上

  • Overview
  • 访问数据库
  • 访问集合
  • 创建集合
  • 获取集合列表
  • 删除集合
  • 配置读取和写入操作
  • API 文档

在本指南中,您可以学习;了解如何通过MongoDB PHP库使用MongoDB数据库和集合。

MongoDB 将数据组织成以下级别的层次结构:

  • 数据库: MongoDB 部署中用于存储集合的顶级数据结构。

  • 集合: MongoDB文档组。 它们类似于关系数据库中的表。

  • 文档:存储字面数据(例如string 、数字、日期和其他嵌入式文档)的单位。 有关文档字段类型和结构的更多信息,请参阅MongoDB Server手册中的文档指南。

通过将数据库名称传递给 MongoDB\Client::selectDatabase()方法来访问数据库。

以下示例将访问名为test_database的数据库:

$db = $client->selectDatabase('test_database');

或者,您可以对客户端对象隐式调用MongoDB\Client::__get()魔术方法。 此方法允许您使用访问类属性的语法来选择数据库。 以下示例使用此速记语法访问权限test_database数据库:

$db = $client->test_database;

提示

要学习;了解有关__get()和PHP魔术方法的更多信息,请参阅以下资源:

  • MongoDB\Client::__get() 在库API文档中

  • 魔术方法 在PHP手册中

使用以下任一方法访问集合:

  • MongoDB\Client::selectCollection():将数据库和集合名称作为参数传递

  • MongoDB\Database::selectCollection():将集合名称作为参数传递

以下示例使用MongoDB\Database::selectCollection()方法访问名为test_collection的集合:

$collection = $client->test_database->selectCollection('test_collection');

提示

如果提供的集合名称在数据库中尚不存在,则当您首次向其中插入数据时,MongoDB 会隐式创建该集合。

或者,您可以对数据库对象隐式调用MongoDB\Database::__get()魔术方法。 此方法允许您使用访问类属性的语法来选择集合。 以下示例使用此速记语法访问权限test_collection集合:

$collection = $db->test_collection;

要学习;了解详情,请参阅MongoDB\Database::__get() API文档。

将集合名称传递给MongoDB\Database::createCollection()方法,以在MongoDB 数据库中显式创建集合。

以下示例创建了一个名为example_collection的collection:

$result = $client->test_database->createCollection('example_collection');

您可以指定集合选项,例如最大大小和文档验证规则,将其作为大量传递给createCollection()方法。 有关可选参数的完整列表,请参阅API文档。

您可以通过调用MongoDB\Database::listCollections()方法来查询数据库中的集合列表。 该方法返回一个游标,其中包含数据库中的所有集合及其关联的元数据。

以下示例调用listCollections()方法并对返回的迭代器进行迭代,以打印访问集合创建集合示例中的集合:

foreach ($client->test_database->listCollections() as $collectionInfo) {
print_r($collectionInfo) . PHP_EOL;
}
MongoDB\Model\CollectionInfo Object
(
[name] => example_collection
[type] => collection
...
)
MongoDB\Model\CollectionInfo Object
(
[name] => test_collection
[type] => collection
...
)

您可以使用MongoDB\Database::dropCollection()方法从数据库中删除集合。

以下示例删除test_collection集合:

$client->test_database->dropCollection('test_collection');

警告

删除集合会删除该集合中的所有数据

从数据库中删除集合会永久删除该集合中的所有文档和所有索引。

仅当不再需要集合中的数据时才删除集合。

您可以通过指定读取偏好(read preference)、读关注(read concern)或写关注(write concern)来控制写入操作在副本集上的运行方式。

默认,数据库会从MongoDB\Client实例继承写入设置。 集合从调用selectCollection()方法的MongoDB\ClientMongoDB\Database实例继承这些设置。 您可以通过将选项大量传递给MongoDB\Client::selectDatabase()MongoDB\Client::selectCollection()MongoDB\Database::selectCollection()方法来更改这些设置。

要学习;了解有关设置读取偏好(read preference)、读关注(read concern)和写关注(write concern)的更多信息,请参阅指定CRUD操作在副本集上的运行方式指南。

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档:

后退

Stable API