参考 > 参考 > mongo Shell方法 > 收集方法 > db.collection.insertOne()
db.collection.
insertOne
()¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
3.2版中的新功能。
将文档插入集合中。
该insertOne()
方法具有以下语法:
参数 | 类型 | 描述 |
---|---|---|
document |
文献 | 要插入集合中的文档。 |
writeConcern |
文献 | 可选的。表达书面关切的文件。省略使用默认的写关注。 如果在事务中运行,则不要为操作明确设置写关注点。要对事务使用写关注,请参见 事务和写关注。 |
返回值: | 包含以下内容的文档:
|
---|
如果该集合不存在,则该
insertOne()
方法将创建该集合。
_id
字段¶如果文档未指定_id字段,则将在插入之前mongod
添加该_id
字段并ObjectId
为文档分配唯一性
。大多数驱动程序会创建一个ObjectId并插入_id
字段,但
如果驱动程序或应用程序未mongod
创建,则会创建并填充_id
。
如果文档包含一个_id
字段,则该_id
值在集合中必须唯一,以避免重复的键错误。
错误时,db.collection.insertOne()
引发a writeError
或writeConcernError
异常。
db.collection.insertOne()
可以在多文档交易中使用。
集合必须已经存在。事务中不允许执行会导致创建新集合的插入操作。
如果在事务中运行,则不要为操作明确设置写关注点。要对事务使用写关注,请参见 事务和写关注。
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应代替有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)对于您的数据和用例将继续是最佳的。也就是说,在许多情况下,对数据进行适当的建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和oplog大小限制),另请参见 生产注意事项。
_id
字段¶在以下示例中,传递给该insertOne()
方法的文档
不包含该_id
字段:
该操作返回以下文档:
由于文档不包含_id
,因此
mongod
创建并添加该_id
字段并为其分配唯一ObjectId
值。
这些ObjectId
值特定于机器和运行该操作的时间。因此,您的值可能与示例中的值不同。
_id
字段的文档¶在以下示例中,传递给该insertOne()
方法的文档
包括该_id
字段。值_id
在集合中必须唯一,以避免重复的键错误。
该操作返回以下内容:
为唯一索引(例如)的一部分的任何键插入重复值_id
会引发异常。以下尝试插入具有_id
已经存在的值的文档:
由于已经存在,因此将引发以下异常:_id: 10
给定三个成员的副本集,以下操作指定
w
的majority
,wtimeout
共个100
:
如果确认花费的时间超过wtimeout
限制,则会引发以下异常:
也可以看看
要插入多个文档,请参阅
db.collection.insertMany()