insertOne()(插入单条)
最后更新:2026-10-09
insertOne()(插入单条)
insertOne() 向集合插入一条文档。若文档未指定 _id,MongoDB 会自动生成一个 ObjectId 作为 _id。返回结果包含 insertedId 与 acknowledged 字段。它是写入单条文档最直接的方式,比 insertMany() 多一次往返。
| 分类 | 写入 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.<集合>.insertOne(<文档>, { writeConcern: <选项> })
⚙️ 参数
| 文档 | 要插入的 BSON 文档。可含嵌套字段和数组。 |
|---|
返回值:WriteResult:{ acknowledged, insertedId }
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// insertOne:插入单条用户
db.users.insertOne({
name: "Alice",
age: 21,
address: { city: "Beijing" }
})
运行结果:
{
acknowledged: true,
insertedId: ObjectId("64c8a1b2f3d4e5a6b7c8d9e0")
}
📌 注意事项
- 不指定 _id 时自动生成 ObjectId
- 文档大小上限 16MB(BSON 限制)
- _id 重复会抛 DuplicateKeyError(唯一索引)
- 写关注默认 acknowledged: true
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
QinsertOne 能插入数组吗?
A不能直接插数组作为顶层文档——顶层必须是文档(对象)。数组可作为文档内的字段值。
QinsertOne 不指定 _id 会怎样?
AMongoDB 会自动生成一个 ObjectId 作为 _id。你也可以自行指定 _id,但集合内不能重复,否则触发重复键错误。
QinsertOne 支持写入时指定 writeConcern 吗?
A可以,insertOne 第二个参数可传 { writeConcern: { w: 'majority' } } 等选项控制写入确认级别,默认使用集合或会话的配置。