新增文档

新增文档

MongoDB 使用 insert() 或 save() 方法向集合中插入文档。

基本语法

db.集合名.insert(document)Code language: JavaScript (javascript)

直接插入文档

db.user.insert({name: '张三', age: 12})Code language: CSS (css)

执行成功后会返回写入结果:

WriteResult({ "nInserted" : 1 })Code language: JavaScript (javascript)

先将文档存入变量再插入

也可以先把文档定义为一个变量,再将该变量传入 insert() 方法。

doc = ({name: '张三', age: 12})
db.user.insert(doc)Code language: JavaScript (javascript)

这种方式在需要多次插入同一结构的文档时比较方便,也可以先构造复杂的嵌套文档再统一写入。

insert 与 save 的区别

insert() 在插入时如果未指定 _id 字段,MongoDB 会自动生成一个 ObjectId 作为文档主键。如果手动指定了 _id 且数据库中已存在相同 _id 的文档,insert() 会报错。

save() 在指定了 _id 的情况下,如果数据库中已存在该 _id 的文档,会执行全量替换更新;如果不存在则执行插入。未指定 _id 时,save() 的行为与 insert() 一致。

批量插入

insert() 也支持一次性插入多条文档,传入一个数组即可。

db.user.insert([
  {name: '张三', age: 12},
  {name: '李四', age: 15},
  {name: '王五', age: 20}
])Code language: JavaScript (javascript)

返回结果中会显示成功插入的条数:

BulkWriteResult({
  "writeErrors" : [ ],
  "writeConcernErrors" : [ ],
  "nInserted" : 3,
  "nUpserted" : 0,
  "nMatched" : 0,
  "nModified" : 0,
  "nRemoved" : 0,
  "upserted" : [ ]
})Code language: JavaScript (javascript)

插入时自动创建集合

如果插入文档时指定的集合不存在,MongoDB 会自动创建该集合。

db.student.insert({name: "张飞"})
show collectionsCode language: CSS (css)

查询集合列表时会看到 student 已自动创建。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注