Mongoose 4.4现在有一个insertMany
函数,它允许你验证一个文档数组,如果只有一个操作有效,则插入它们,而不是每个文档都有一个:
var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }];
Movies.insertMany(arr, function(error, docs) {});
如果我有一个非常大的数组,我应该批量这些吗?或者对大小或数组没有限制?
例如,我想为每部电影创建一个新文档,我有10,000部电影。
答案 0 :(得分:9)
我建议根据个人经验,批量100-200为您提供良好的性能组合,而不会给您的系统带来压力。
insertMany操作组最多可以有1000个操作。如果一个组超过此限制,MongoDB会将该组划分为1000或更少的较小组。例如,如果队列包含2000个操作,MongoDB将创建2个组,每个组有1000个操作。
尺寸和分组机制是内部性能详细信息,在将来的版本中可能会有所变化。
在分片集合上执行有序操作列表通常比执行无序列表要慢,因为对于有序列表,每个操作都必须等待上一个操作完成。
答案 1 :(得分:5)
The method接受该数组并开始通过MongoDB中的insertMany方法插入它们,因此数组本身的大小实际上取决于machine can handle的数量。
但是请注意,还有另外一点,不是限制,而是值得考虑的事情,关于MongoDB如何处理多个操作,默认情况下它一次处理一个batch of 1000 operations并且分割什么比那。
答案 2 :(得分:2)
Mongo 3.6更新:
从insertMany()
到1000
,100,000
的限制为increased in Mongo 3.6。
这意味着现在,100,000
次操作以上的组将相应地分成更小的组。
例如:具有200,000
个操作的队列将被拆分,Mongo将分别创建2个100,000
组。