Mongoose 4.4现在有一个insertMany
函数,它使您能够验证文档数组并在所有文档有效时一次性插入它们,而不是对每个文档进行单独操作:
var arr = [{ name: '星球大战' }, { name: '帝国反击战' }];
Movies.insertMany(arr, function(error, docs) {});
如果我有一个非常大的数组,应该将它们分批处理吗?还是数组大小没有限制?
例如,我想为每个电影创建一个新文档,我有10,000部电影。
基于个人经验,建议每批处理100-200条数据,既能提高性能,又不会给系统带来过大的负担。
insertMany操作组最多可以有1000个操作。如果一个组超过了这个限制,MongoDB将把该组分成1000个或更少的较小组。例如,如果队列包含2000个操作,则MongoDB将创建2个组,每个组有1000个操作。
这些大小和分组机制是内部性能细节,可能会在以后的版本中发生变化。
在分片集合上执行有序操作列表通常比执行无序操作列表要慢,因为在有序列表中,每个操作都必须等待前一个操作完成。
Mongo 3.6更新:
insertMany()
的限制在Mongo 3.6中增加,从1000
增加到100,000
。
这意味着现在,超过100,000
操作的组将相应地分成更小的组。
例如:一个有200,000
个操作的队列将被分成两个包含各100,000
个操作的组。
async/await
将数据发送到另一台服务器?这也可能导致速度变慢。 - FireBrand