Docs 菜单

Docs 主页开发应用程序Python 驱动程序pymongo

插入文档

在此页面上

  • Overview
  • 样本数据
  • _id 字段
  • 插入一个文档
  • 插入多个文档
  • 修改插入行为
  • 例子
  • 更多信息
  • API 文档

在本指南中,您可以了解如何使用 PyMongo 通过执行插入操作将文档添加到 MongoDB 集合。

插入操作将一个或多个文档插入 MongoDB 集合。 您可以使用 insert_one()insert_many()方法执行插入操作。

本指南中的示例使用 Atlas 样本数据集中sample_restaurants.restaurants集合。 要了解如何创建免费的MongoDB Atlas cluster并加载样本数据集,请参阅PyMongo入门教程。

在 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 文档:

← 将数据写入 MongoDB