插入文档
概述
在本指南中,您可以学习如何使用MongoDB PHP库通过执行插入操作向MongoDB集合中添加文档。
插入操作将一个或多个文档插入到MongoDB集合中。您可以通过以下方法执行插入操作:
MongoDB\Collection::insertOne()
方法用于插入单个文档MongoDB\Collection::insertMany()
方法用于插入一个或多个文档
示例数据
本指南中的示例使用来自Atlas示例数据集中的sample_restaurants
数据库中的restaurants
集合。要从您的PHP应用程序访问此集合,请实例化一个连接到Atlas集群的MongoDB\Client
并将以下值分配给您的$collection
变量
$collection = $client->sample_restaurants->restaurants;
要了解如何创建免费的MongoDB Atlas集群并加载数据集,请参阅Atlas入门指南。
《_id
字段》
在 MongoDB 集合中,每个文档 必须 包含一个具有唯一字段值的 _id
字段。
MongoDB 允许您以两种方式管理此字段
自行设置每个文档的
_id
字段,确保每个值都是唯一的。让驱动程序自动为每个文档的
_id
字段生成唯一的ObjectId
值。
除非您能保证唯一性,否则我们建议让驱动程序自动生成 _id
值。
注意
重复的 _id
值违反了唯一索引约束,这会导致驱动程序返回一个 MongoDB\Driver\Exception\BulkWriteException
错误。
有关 _id
字段的更多信息,请参阅 MongoDB 服务器手册中的 唯一索引 指南。
有关文档结构和规则的信息,请参阅 MongoDB 服务器手册中的 文档 指南。
插入单个文档
要将单个文档添加到 MongoDB 集合中,请调用 MongoDB\Collection::insertOne()
方法并传递您要添加的文档。
以下示例将文档插入到 restaurants
集合中
$result = $collection->insertOne(['name' => 'Mongo\'s Burgers']);
插入多个文档
要将多个文档添加到 MongoDB 集合中,请调用 MongoDB\Collection::insertMany()
方法,并传递一个包含您想要添加的文档列表的数组。
以下示例将两个文档插入到 restaurants
集合中
$restaurants = [ ['name' => 'Mongo\'s Burgers'], ['name' => 'Mongo\'s Pizza'] ]; $result = $collection->insertMany($restaurants);
修改插入行为
您可以通过传递一个指定选项值的数组作为参数来修改 MongoDB\Collection::insertOne()
和 MongoDB\Collection::insertMany()
方法的行为。以下表格描述了您可以设置的某些选项
字段 | 描述 |
---|---|
bypassDocumentValidation | |
writeConcern | 设置操作的写入关注点。 默认值为命名空间的写入关注点。 类型: MongoDB\Driver\WriteConcern |
ordered | 如果设置为 true ,则在插入失败时操作停止插入文档。如果为 false ,则在插入失败时继续插入剩余的文档。您不能将此选项传递给 insertOne() 方法。默认值为 true 。类型: bool |
comment | 要附加到操作的注释。有关更多信息,请参阅 MongoDB 服务器手册中的 插入命令字段 指南。 类型: 任何有效的 BSON 类型 |
示例
以下代码使用 insertMany()
方法将三个新文档插入到集合中。由于在选项数组中将 bypassDocumentValidation
字段设置为 true
,此插入操作绕过了文档级别的验证
$docs = [ ['name' => 'Mongo\'s Burgers'], ['name' => 'Mongo\'s Pizza'], ['name' => 'Mongo\'s Tacos'] ]; $result = $collection->insertMany($docs, ['bypassDocumentValidation' => true]);
附加信息
要查看使用 MongoDB PHP 库插入文档的可运行代码示例,请参阅将数据写入 MongoDB.
API 文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下 API 文档