Ruby と Mongo は初めてで、Twitter データを扱っています。Ruby 1.9.3 と Mongo gem を使用しています。
Mongo から大量のデータをクエリし、いくつかのドキュメントを除外し、残りのドキュメントを処理 (新しいフィールドを挿入) してから、新しいドキュメントを Mongo に書き込みます。
以下のコードは機能していますが、.each を使用してループし、新しいドキュメントを一度に 1 つずつ Mongo に挿入するため、実行速度が比較的遅くなります。
私の質問: これをどのように構造化して処理し、一括で挿入できますか?
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
どんな助けでも大歓迎です。