2016-03-16 3 views
8

Mongoose 4.4 теперь имеет insertMany функцию, которая позволяет проверить массив документов и вставлять их, если действительно все с одной операцией, а не по одному для каждого документа:Mongoose insertMany

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

Если у меня есть очень большой массив, должен ли я их выполнять? Или нет ограничений на размер или массив?

Например, я хочу создать новый документ для каждого фильма, и у меня есть 10 000 фильмов.

ответ

6

Я бы рекомендовал, основываясь на личном опыте, партия 100-200 дает вам хорошее сочетание производительности без нагрузки на вашу систему.

insertMany группа операций может иметь не более 1000 операций. Если группа превышает этот предел, MongoDB разделит группу на более мелкие группы, равные 1000 или менее. Например, если очередь состоит из 2000 операций, MongoDB создает 2 группы, каждая из которых имеет 1000 операций.

Механизмы размеров и группировки являются внутренними характеристиками производительности и могут быть изменены в будущих версиях.

Выполнение упорядоченного списка операций в закрытой коллекции обычно будет медленнее, чем выполнение неупорядоченного списка, поскольку с упорядоченным списком каждая операция должна дождаться завершения предыдущей операции.

4

The method принимает этот массив и начинает вставлять их через метод insertMany в MongoDB, поэтому размер самого массива фактически зависит от того, насколько ваш machine can handle.

Но обратите внимание, что есть еще один момент, который не является ограничением, но что-то стоит учесть, о том, как MongoDB имеет дело с несколькими операциями, по умолчанию он обрабатывает batch of 1000 operations за раз и делится на что-то большее.

1

Монго 3,6 обновление:

Предел insertMany() имеет increased in Mongo 3.6 от 1000 до 100,000. Это означает, что теперь группы выше 100,000 будут разделены на более мелкие группы. Например: очередь, которая имеет 200,000 операций, будет разделена, а Mongo создаст 2 группы по 100,000.

Смежные вопросы