插入文档
概述
在本指南中,您可以学习如何通过执行插入操作使用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 文档