新增文档
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 已自动创建。