MongoDB 插入(insert)数据的正确方法
MongoDB 使用 insert()
或 save()
方法向集合中插入文档,语法如下:
db.collection.insert(document)
//或
db.collection.save(document)
1
2
3
2
3
save()
:如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用db.collection.insertOne()
或db.collection.replaceOne()
来代替。insert()
: 若插入的数据主键已经存在,则会抛org.springframework.dao.DuplicateKeyException
异常,提示主键重复,不保存当前数据。 3.2 版本之后新增了db.collection.insertOne()
和db.collection.insertMany()
。
db.collection.insertOne()
用于向集合插入一个新文档,语法格式如下:
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
1
2
3
4
5
6
2
3
4
5
6
db.collection.insertMany()
用于向集合插入一个多个文档,语法格式如下:
db.collection.insertMany(
[ <document1> , <document2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
1
2
3
4
5
6
7
2
3
4
5
6
7
参数说明:
document
:要写入的文档。writeConcern
:写入策略,默认为 1,即要求确认写操作,0 是不要求。ordered
:指定是否按顺序写入,默认 true,按顺序写入。
一次插入多条数据
注意
批量插入时尽量以数组的形式插入,避免循环插入
以数组的方式插入,例如:
let startTime = (new Date()).getTime();
let db = connect('log');
let tempArray = []; //声明一个数组
for(let i=0;i<1000;i++){ //循环向数组中放入值
tempArray.push({num:i});
}
db.test.insert(tempArray) //批量一次插入
let runTime = (new Date()).getTime()-startTime;
print ('This run this is:'+runTime+'ms');
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
上次更新: 2024/01/30, 00:35:17