对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

插入文档

在本指南中,您可以学习如何使用Ruby驱动程序通过执行插入操作将文档添加到MongoDB集合。

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

  • insert_one 插入单个文档

  • insert_many 插入一个或多个文档

本指南中的示例使用Atlas示例数据集sample_restaurants数据库中的 restaurants集合。要从Ruby应用程序访问权限此集合,请创建一个连接到Atlas 集群的Mongo::Client对象,并将以下值分配给 databasecollection 变量:

database = client.use('sample_restaurants')
collection = database[:restaurants]

要学习如何创建免费的MongoDB Atlas 集群并加载示例数据集,请参阅MongoDB 入门指南

在 MongoDB 集合中,每个文档必须包含具有唯一字段值的 _id 字段。

MongoDB 允许您通过两种方式管理该字段:

  • 自行为每个文档设置_id字段,确保每个值都是唯一的。

  • 让驱动程序自动为每个文档_id字段生成唯一的 BSON::ObjectId 值。

除非您可以保证唯一性,否则我们建议让驱动程序自动生成_id值。

注意

重复的 _id 值违反了唯一索引约束,导致驱动程序返回错误。

要了解有关_id字段的更多信息,请参阅 MongoDB Server 手册中的唯一索引指南。

要了解有关文档结构和规则的更多信息,请参阅 MongoDB Server 手册中的文档指南。

要将单个文档添加到MongoDB集合,请调用 insert_one 方法并传递要插入的文档。

以下示例将文档插入restaurants集合:

document = { name: 'Neighborhood Bar & Grill', borough: 'Queens' }
collection.insert_one(document)

要将多个文档添加到MongoDB集合,请调用 insert_many 方法并传递要插入的文档列表。

以下示例将两个文档插入restaurants集合:

documents = [
{ name: 'Metropolitan Cafe', borough: 'Queens' },
{ name: 'Yankee Bistro', borough: 'Bronx' }
]
collection.insert_many(documents)

您可以将 Hash对象作为参数传递给 insert_one 方法,以设立配置插入操作的选项。如果不指定任何选项,驱动程序将使用默认设置执行插入操作。

下表描述了可设立配置 insert_one 操作的选项:

选项
说明

bypass_document_validation

指示驾驶员是否忽略文档级验证。有关更多信息,请参阅MongoDB Server手册中的模式验证。默认为
false

comment

设置要附加到操作的注释。有关更多信息,请参阅MongoDB Server手册中的插入命令字段指南。

session

设置用于操作的会话。要学习;了解有关会话的更多信息,请参阅MongoDB Server手册中的客户端会话和因果一致性保证。

write_concern

设置操作的写关注(write concern)。有关更多信息,请参阅MongoDB Server手册中的写关注指南。

您可以通过将 Hash 作为参数传递给方法调用,对 insert_many 方法设立上述设置。您还可以使用 ordered 选项指定驱动程序将文档插入 MongoDB 的顺序。

以下代码使用 insert_many 方法将三个新文档插入到集合中。由于已启用 bypass_document_validation 选项,因此此插入操作会绕过文档级验证。

documents = [
{ name: 'Cloudy Day', borough: 'Brooklyn' },
{ name: 'Squall or Shine', borough: 'Staten Island' }
{ name: 'Rose Field', borough: 'Queens' }
]
options = { bypass_document_validation: true }
collection.insert_many(documents, options)

要进一步了解本指南所讨论的任何方法,请参阅以下 API 文档: