2011-01-28 79 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