我是 Ruby 和 Mongo 的新手,正在处理 twitter 数据。我正在使用 Ruby 1.9.3 和 Mongo gems。
我正在从 Mongo 中查询批量数据,过滤掉一些文档,处理剩余的文档(插入新字段),然后将新文档写入 Mongo。
下面的代码正在运行,但运行速度相对较慢,因为我循环使用 .each 然后将新文档一次插入到 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
任何帮助是极大的赞赏。