插入文档
概述
在本指南中,您可以学习如何通过执行插入操作使用PyMongo将文档添加到MongoDB集合中。
插入操作将一个或多个文档插入MongoDB集合中。您可以通过使用insert_one() 或 insert_many() 方法执行插入操作。
示例数据
本指南中的示例使用了来自Atlas示例数据集的sample_restaurants.restaurants集合。要了解如何创建免费的MongoDB Atlas集群并加载示例数据集,请参阅PyMongo入门教程。
_id字段
在MongoDB集合中,每个文档都必须包含一个具有唯一字段值的_id字段。
MongoDB允许您以两种方式管理此字段:
您可以为每个文档自行设置此字段,确保每个
_id字段值都是唯一的。您可以让驱动程序为每个文档的
_id字段自动生成唯一的ObjectId值。如果您未手动设置文档的_id值,驱动程序将用ObjectId填充该字段。
除非您能保证唯一性,否则我们建议让驱动程序自动生成_id值。
注意
重复的_id值违反了唯一索引约束,导致驱动程序从insert_one()返回WriteError或从insert_many()返回BulkWriteError。
有关_id字段的更多信息,请参阅MongoDB服务器手册中的唯一索引指南。
有关文档结构和规则的更多信息,请参阅MongoDB服务器手册中的文档指南。
插入单个文档
要将单个文档添加到MongoDB集合中,请调用insert_one()方法并传递要添加的文档。
以下示例将文档插入到restaurants集合中:
sample_restaurants.restaurants.insert_one({"name" : "Mongo's Burgers"})
插入多个文档
要将多个文档添加到MongoDB集合中,请调用insert_many()方法并传递要添加的文档列表。
以下示例向 restaurants 集合插入文档列表
document_list = [ { "name" : "Mongo's Burgers" }, { "name" : "Mongo's Pizza" } ] sample_restaurants.restaurants.insert_many(document_list)
修改插入行为
insert_one() 方法可以接受额外的参数,这些参数代表您可以使用它们来配置插入操作。如果您没有指定任何额外参数,驱动程序不会自定义插入操作。
属性 | 描述 |
|---|---|
bypass_document_validation | 如果设置为 True,允许写入操作选择退出文档级别的验证。默认为 False。 |
session | ClientSession 的实例。 |
comment | 附加到操作的注释。有关更多信息,请参阅 MongoDB 服务器手册中的insert 命令字段指南。 |
insert_many() 方法接受前面提到的可选参数,以及可选的 ordered 属性
属性 | 描述 |
|---|---|
ordered | 如果设置为 True,则驱动程序将按照提供的顺序将文档发送到服务器。如果发生错误,驱动程序和服务器将取消所有剩余的插入操作。默认为 True。 |
示例
以下代码使用 insert_many() 方法向集合中插入三个新文档。因为第二个方法参数是 bypass_document_validation = True,所以此插入操作绕过了文档级别的验证。
document_list = [ { "name" : "Mongo's Burgers" }, { "name" : "Mongo's Pizza" }, { "name" : "Mongo's Tacos" } ] sample_restaurants.restaurants.insert_many(document_list, bypass_document_validation = True)
附加信息
有关使用 PyMongo 插入文档的运行代码示例,请参阅 将数据写入 MongoDB。
API 文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下 API 文档