# 插入文档

该页面提供了MongoDB中插入操作的示例。

> **建立集合**
>
> 如果该集合当前不存在，则插入操作将创建该集合。

## **插入一个文件**

[`db.collection.insertOne()`](https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/#db.collection.insertOne)将单个[文档](https://docs.mongodb.com/master/core/document/#bson-document-format)插入集合中。

以下示例将一个新文档插入库存集合。 如果文档未指定\*\*\_id**字段，则MongoDB将具有**ObjectId**值的**\_id\*\*字段添加到新文档中。 请参阅[插入行为](https://docs.mongodb.com/manual/tutorial/insert-documents/#write-op-insert-behavior)。

```
db.inventory.insertOne(  
        { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
```

[`insertOne()`](https://docs.mongodb.com/master/reference/method/db.collection.insertOne/#db.collection.insertOne)返回一个文档，其中包含新插入的文档的\_id字段值。有关返回文档的示例，请参阅[`db.collection.insertOne() reference`](https://docs.mongodb.com/master/reference/method/db.collection.insertOne/#insertone-examples)引用。

要检索刚刚插入的文档，[查询集合:](https://docs.mongodb.com/master/core/document/#document-query-filter)

```
db.inventory.find( { item: "canvas" } )
```

## **插入多个文件**

*3.2版中的新功能*

[db.collection.insertMany()](https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/#db.collection.insertMany)可以将多个文档插入一个集合中。 将文档数组传递给该方法。

下面的示例将三个新文档插入库存集合。 如果文档未指定\*\*\_id**字段，则MongoDB向每个文档添加带有**ObjectId**值的**\_id\*\*字段。 请参阅 [插入行为](https://docs.mongodb.com/manual/tutorial/insert-documents/#write-op-insert-behavior)。

```
db.inventory.insertMany([
        { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } }, 
        { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
        { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
    ])
```

返回包含新插入的文档\*\*\_id\*\*字段值的文档。 有关示例，请参见[参考](https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/#insertmany-examples)。

要检索插入的文档，[查询集合:](https://docs.mongodb.com/master/core/document/#document-query-filter)

```
db.inventory.find( {} )
```

## **插入行为**

### 集合创建

如果该集合当前不存在，则插入操作将创建该集合。

### `_id` Field

在MongoDB中，存储在集合中的每个文档都需要一个唯一的\*\*\_id**字段作为主键。 如果插入的文档省略**\_id**字段，则MongoDB驱动程序会自动为**\_id**字段生成**ObjectId\*\*。

这也适用于通过[upsert：true](/mongodb-crud-operations/insert-documents.md)通过更新操作插入的文档。

### 原子性

MongoDB中的所有写操作都是单个文档级别的原子操作。 有关MongoDB和原子性的更多信息，请参见[原子性和事务](https://docs.mongodb.com/manual/core/write-operations-atomicity/).

### 写确认书

对于写入问题，您可以指定从MongoDB请求的写入操作的确认级别。 有关详细信息，请参见[写关注](https://docs.mongodb.com/manual/reference/write-concern/)。

另可参考：

* [db.collection.insertOne()](https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/#db.collection.insertOne)
* [db.collection.insertMany()](https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/#db.collection.insertMany)
* [Additional Methods for Inserts](https://docs.mongodb.com/manual/reference/insert-methods/#additional-inserts)

译者：杨帅

校对：杨帅


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mongoing.com/mongodb-crud-operations/insert-documents.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
