Как я могу улучшить производительность MongoDB?

У меня есть этот объект с некоторыми метаданными и большим массивом элементов. Я имел обыкновение хранить это в монго, и запрашивая его$unwindв массиве. Однако в крайних случаях массив становится настолько большим, что я сталкиваюсь с ограничениями BSON 16 МБ.

Поэтому мне нужно хранить каждый элемент массива как отдельный документ. Для этого мне нужно добавить метаданные ко всем из них, чтобы я мог найти их обратно.Предполагается, что я использую массовые операции за это.

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

var bulk        = col.initializeOrderedBulkOp();
var metaData    = {
    hash            : hash,
    date            : timestamp,
    name            : name
};

// measure time here

for (var i = 0, l = array.length; i < l; i++) { // 6000 items
    var item = array[i];

    bulk.insert({ // Apparently, this 6000 times takes 2.9 seconds
        data        : item,
        metaData    : metaData
    });

}

bulk.execute(bulkOpts, function(err, result) { // and this takes 6.5 seconds
    // measure time here
});

Массовая вставка 6000 документов общим объемом данных 38 МБ (что соответствует 49 МБ как BSON в MongoDB), производительность кажется неприемлемо плохой. Затраты на добавление метаданных к каждому документу не могут быть такими плохими, верно? Затраты на обновление двух индексов не могут быть такими плохими, верно?

Я что-то пропустил? Есть ли лучший способ вставки групп документов, которые нужно выбрать как группу?

Это не только мой ноутбук. То же самое на сервере. Заставляет меня думать, что это не ошибка конфигурации, а ошибка программирования.

Использование MongoDB2.6.11 с адаптером узлаnode-mongodb-native 2.0.49

-Обновить-

Просто акт добавления метаданных к каждому элементу в массовых счетах для2,9 секунды, Там должен быть лучший способ сделать это.

Ответы на вопрос(1)

Ваш ответ на вопрос