在for循环中执行mongo会导致它崩溃吗?

问题描述 投票:1回答:1

我有一个爬虫设置,可以抓取网站上的所有(唯一)链接,并将链接及其正文标记内容存储在mongo中。下次我抓取网站时,我需要确保只有新的链接或带有更新的body-tag内容的链接才会被摄取,以避免重复。

所以,基本上我正在填充一系列新近爬行的链接,并且我正在执行的数组中的每个链接对象 db.collection.find({:link_url => link_url,:body => body})

在for-loop中运行上面查找查询会导致任何障碍或崩溃吗?让我们说在最坏的情况下,阵列的长度可能是5000。

我尝试在一个查询中获取整个集合,但该方法需要深度哈希匹配,并且是n ^ 2操作。或者它需要多次散列重组操作才能使其适合比较。

for(i<5000)
  temp = db.collection.find(i) 
end


这是我正在实施的核心逻辑。用mongodb / mongoid / rails可以吗?

ruby-on-rails mongodb mongoid
1个回答
0
投票

MongoDB不会从大量查询中崩溃,但是您的爬虫可能会运行缓慢。您可以考虑使用$ in运算符来匹配单个查询中的多个值,或者使用$或运算符来处理更复杂的条件,并确保您正在执行的查询正在使用索引。

© www.soinside.com 2019 - 2024. All rights reserved.