Ограничение в получении строк из 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? Что там происходит во время паузы?