2011-01-28 55 views
2

我存儲了大量的Twitter數據,並且想要一次檢索大約500k個數據處理記錄。我有一個包含基本的鳴叫數據TwitterTweet蒙戈文件,並嘗試按如下方式進行檢索:在Mongo映射器中高效檢索大數據集?

weekly_tweets = TwitterTweet.all(:created_at.gt => 1.week.ago, :fields => [:created_at, :text, :from_user])

麻煩的是,這佔用的時間和內存有很多 - 有什麼辦法,使這更可擴展和高效。我曾想過使用map reduce,但它看起來非常複雜,我想做的事情 - 文本處理和推文上的正則表達式。

+0

爲什麼不是更多,更小的電話?使用跳過和限制,一次取1000個。 – 2011-01-28 19:59:27

回答

0

不要打電話給所有人,因爲這會讓您在mongo中輸入所有500k條目的效果,並且會像您注意到的那樣使用大量的內存和時間。改爲使用find_each並遍歷。 Find可以返回更高效的遊標。

+0

我似乎無法找到描述此操作的文檔。你能幫我把我的問題中的.all()代碼轉換爲.find()迭代嗎? – bluebit 2011-01-31 08:48:57