猫鼬插入很多限制

lif*_*ian 15 mongoose mongodb node.js

Mongoose 4.4现在有一个insertMany函数,它允许您验证文档数组并插入它们,如果有效,只需一个操作,而不是每个文档一个:

var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }]; Movies.insertMany(arr, function(error, docs) {});

如果我有一个非常大的数组,我应该批量这些吗?或者大小或阵列没有限制?

例如,我想为每部电影创建一个新文档,我有10,000部电影.

Sal*_*eem 11

我建议根据个人经验,批量100-200为您提供良好的性能组合,而不会给您的系统带来压力.

insertMany操作组最多可以有1000个操作.如果一个组超过此限制,MongoDB会将该组划分为1000或更少的较小组.例如,如果队列包含2000个操作,MongoDB将创建2个组,每个组具有1000个操作.

大小和分组机制是内部性能详细信息,在将来的版本中可能会有所变化.

在分片集合上执行有序操作列表通常比执行无序列表慢,因为对于有序列表,每个操作必须等待上一个操作完成.

  • 这不是最新的 - 从 v3.6 开始,批量大小为 100,000 (3认同)

Fir*_*and 11

Mongo 3.6 更新:

对于限制insertMany()在蒙戈3.6增加1000100,000。这意味着现在,以上100,000操作的组将相应地分为更小的组。例如:一个有200,000操作的队列将被拆分,Mongo 将创建 2 个组100,000


Rab*_*bea 5

该方法接受该数组并开始通过MongoDB中的insertMany方法插入它们,因此数组本身的大小实际上取决于您的机器可以处理多少.

但是请注意,还有另外一点,不是限制,而是值得考虑的事情,关于MongoDB如何处理多个操作,默认情况下它一次处理一批1000个操作并分割出更多的操作.