Docs 主页 → 开发应用程序 → Python 驱动程序 → pymongo
插入文档
Overview
在本指南中,您可以了解如何使用 PyMongo 通过执行插入操作将文档添加到 MongoDB 集合。
插入操作将一个或多个文档插入 MongoDB 集合。 您可以使用 insert_one()
或insert_many()
方法执行插入操作。
样本数据
本指南中的示例使用 Atlas 样本数据集中的sample_restaurants.restaurants
集合。 要了解如何创建免费的MongoDB Atlas cluster并加载样本数据集,请参阅PyMongo入门教程。
_id
字段
在 MongoDB 集合中,每个文档必须包含具有唯一字段值的 _id
字段。
MongoDB 允许您通过两种方式管理该字段:
您可以自行为每个文档设置此字段,确保每个
_id
字段的值都是唯一的。您可以让驱动程序自动为每个文档
_id
生成唯一的ObjectId
值。 如果您没有为文档手动设置_id
值,驱动程序将使用ObjectId
填充该字段。
除非您可以保证唯一性,否则我们建议让驱动程序自动生成_id
值。
注意
重复的 _id
值违反了唯一索引约束条件,会导致驱动程序从 insert_one()
返回 WriteError
,或从 insert_many()
返回 BulkWriteError
。
要了解有关_id
字段的更多信息,请参阅 MongoDB Server 手册中的唯一索引指南。
要了解有关文档结构和规则的更多信息,请参阅 MongoDB Server 手册中的文档指南。
插入一个文档
要将单个文档添加到 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 | If set to True , allows the write to opt out of
document-level validation.Defaults to False . |
session | An instance of ClientSession . |
comment | A comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual for more information. |
InsertMany()
方法接受前面的可选参数以及可选的ordered
属性:
属性 | 说明 |
---|---|
ordered | If set to True , the driver sends documents to the
server in the order provided. If an error occurs, the driver
and server cancel all remaining insert operations.Defaults to 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 文档: