저는 Ruby와 Mongo를 처음 사용하고 트위터 데이터 작업을하고 있습니다. 저는 Ruby 1.9.3과 Mongo gem을 사용하고 있습니다.Mongo - Ruby에 대량 삽입
Mongo에서 대량 데이터를 쿼리하고, 일부 문서를 필터링하고, 남아있는 문서를 처리하고 (새 필드 삽입) Mongo에 새 문서를 쓰고 있습니다.
아래의 코드는 작동하지만 .each를 사용하여 반복하면서 비교적 느리게 실행되고 한 번에 하나씩 새 문서를 삽입합니다.
내 질문 : 어떻게 처리하여 일괄 적으로 삽입 할 수 있습니까?
cursor = raw.find({'user.screen_name' => users[cur], 'entities.urls' => []},{:fields => params})
cursor.each do |r|
if r['lang'] == "en"
score = r['retweet_count'] + r['favorite_count']
timestamp = Time.now.strftime("%d/%m/%Y %H:%M")
#Commit to Mongo
@document = {:id => r['id'],
:id_str => r['id_str'],
:retweet_count => r['retweet_count'],
:favorite_count => r['favorite_count'],
:score => score,
:created_at => r['created_at'],
:timestamp => timestamp,
:user => [{:id => r['user']['id'],
:id_str => r['user']['id_str'],
:screen_name => r['user']['screen_name'],
}
]
}
@collection.save(@document)
end #end.if
end #end.each
도움을 주시면 대단히 감사하겠습니다.
모든 문서를 파일에 쓰고 시스템 명령'mongoimport -d -c
그냥 정상적인 일들 : 색인을 끄고 write_concerns/안전 모드를 끄고 더 빠른 디스크에 넣으십시오 ... – WiredPrairie