使用insertMany时,默认按照参数顺序插入,语法为:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
那么,有序和无序存在哪些区别呢?主要有以下两个方面:
1. 无序性能更高
无序(ordered: false)时,MongoDB可以重新排列插入的顺序,以提高性能。
2. 错误处理不同
有序时,插入文档出现错误后,这条数据以后的文档均不会被插入到集合中。无序时,MongoDB将尝试插入所有文档。
比如在下例中,第三个文档将不能被插入,因为_id重复
db.movies.insertMany([
{_id:1, title:'g'},
{_id:2, title:'f'},
{_id:2, title:'a'},
{_id:3, title:'c'},
]);
执行结果为
[ { "_id": 1, "title": "g" }, { "_id": 2, "title": "f" }]
清除数据,重新执行无序插入
db.movies.drop();
db.movies.insertMany([
{_id:1, title:'g'},
{_id:2, title:'f'},
{_id:2, title:'a'},
{_id:3, title:'c'},
], { ordered: false });
执行结果为
[ { "_id": 1, "title": "g" }, { "_id": 2, "title": "f" }, { "_id": 3, "title": "c" }]