8.MongoDB插入

8.MongoDB插入


8.1 知识点

insertOne(插入单条数据)

insertOne 命令用于在一个 MongoDB 集合中插入单个文档。

如果插入成功,数据库会将新文档存储到集合中,并返回一个包含插入结果的响应。

语法

db.collection.insertOne(document, options)
  • **db**:代表当前数据库。
  • **collection**:目标集合的名称。
  • **document**:需要插入的文档,格式为 JSON 对象。
  • **options**:可选参数,用于配置插入操作的行为。

参数说明

document

这是插入到集合中的数据。

如果未显式指定 _id 字段,MongoDB 会自动为文档生成一个唯一的 ObjectId 作为 _id

示例:

{name: "Tao", age: 24, city: "GuangZhou"}
options
  • writeConcern:定义写入操作的确认级别(如 wjwtimeout 等)。
  • bypassDocumentValidation:布尔值,指定是否跳过文档验证(默认为 false)。

示例:

{ 
  writeConcern: { w: "majority", wtimeout: 5000 }, 
  bypassDocumentValidation: true 
}

返回值

成功执行后,insertOne 返回一个包含以下字段的对象:

  • **acknowledged**:布尔值,表示操作是否成功。
  • **insertedId**:插入文档的 _id 值。

示例返回值:

{acknowledged: true, insertedId: ObjectId("6482b6c7e3f4b5e0d4c88e9a")}

示例

连接

mongodb://myUserAdmin:123456789@127.0.0.1:27017/
基本插入文档
db.users.insertOne({ name: "Tao", age: 24 });

结果

{
  acknowledged: true,
  insertedId: ObjectId("6482b6c7e3f4b5e0d4c88e9a")
}



插入带 _id 的文档
db.users.insertOne({ _id: 1, name: "Tao666", age: 666 });

结果

{acknowledged: true, insertedId: 1 }


使用选项配置插入
db.users.insertOne(
  { name: "Tao", age: 35 },
  { writeConcern: { w: "majority", wtimeout: 5000 } }
);

insertMany(插入多条数据)

insertMany 命令用于在一个 MongoDB 集合中插入多个文档。

如果插入成功,数据库会将新文档存储到集合中,并返回多个包含插入结果的响应。

语法

db.collection.insertMany([ 
  { 文档1 }, 
  { 文档2 }, 
  ... 
], { options })

示例

假设有一个名为 students 的集合,我们想插入多条学生记录:

db.students.insertMany([ 
  { name: "Tao4", age: 20 }, 
  { name: "Taoy5", age: 22 }, 
  { name: "Tao6", age: 19 } 
])

结果

{ 
  "acknowledged": true, 
  "insertedIds": [ 
    ObjectId("64b645cd1f7e4c25fc00123d"), 
    ObjectId("64b645cd1f7e4c25fc00123e"), 
    ObjectId("64b645cd1f7e4c25fc00123f")
  ] 
}


插入时重复_id报错

如果插入的文档的 _id 已存在,MongoDB 会抛出错误:

MongoServerError: E11000 duplicate key error collection: test.users index: _id_ dup key: { _id: 1 }



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏