数据库和集合
Overview
在本指南中,您可以学习;了解如何通过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\Client
或MongoDB\Database
实例继承这些设置。 您可以通过将选项大量传递给MongoDB\Client::selectDatabase()
、 MongoDB\Client::selectCollection()
或MongoDB\Database::selectCollection()
方法来更改这些设置。
要学习;了解有关设置读取偏好(read preference)、读关注(read concern)和写关注(write concern)的更多信息,请参阅指定CRUD操作在副本集上的运行方式指南。
API 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: