Ограничение в получении строк из mongodb из кода ruby

У меня есть код, который получает все записи из коллекции mongodb, а затем выполняет некоторые вычисления.

Моя программа занимает слишком много времени, так как "coll_id.find(). Каждый do |eachitem|......." возвращает только 300 записей одновременно.

Если я помещаю счетчик внутри цикла и проверяю, что он печатает 300 записей, а затем спит в течение 3-4 секунд перед печатью значения счетчика для следующего набора из 300 записей.

coll_id.find().each do |eachcollectionitem|
    puts "counter value for record " + counter.to_s
    counter=counter +1 
            ---- My computations here ----- 
    end

Является ли это ограничением ruby-mongodb api или необходимо выполнить некоторые настройки, чтобы код мог получить доступ ко всем записям в одно мгновение.

1 ответ

Насколько велики ваши документы? Возможно, что десериализация занимает много времени. Используете ли вы расширения C (bson_ext)?

Вы можете попробовать передать регистратор при подключении. Это может помочь разобраться в том, что происходит. Кроме того, вы можете вставить в журнал MongoDB? Что там происходит во время паузы?

Другие вопросы по тегам