Node.js Node/MongoDB scraper-删除不再有效的记录

Node.js Node/MongoDB scraper-删除不再有效的记录,node.js,mongodb,web-scraping,Node.js,Mongodb,Web Scraping,这似乎是一件非常简单的事情,但我找不到任何真正解释如何做到这一点的讨论 我正在用MongoDB和Node.js构建一个scraper。它每天运行一次,并将数百个URL和记录刮到数据库中。例如: 刮刀去 Scraper从该页面获取前100个链接 链接的url、img src、页面标题和域名的记录保存到MongoDB 以下是我努力实现的目标: 如果该图像不再位于100个刮取的链接中,我想将其从数据库中删除 如果图像仍在100个已删除链接中,但详细信息已更改(例如,新页面标题),我希望找到mongo

这似乎是一件非常简单的事情,但我找不到任何真正解释如何做到这一点的讨论

我正在用
MongoDB
Node.js
构建一个scraper。它每天运行一次,并将数百个URL和记录刮到数据库中。例如:

  • 刮刀去
  • Scraper从该页面获取前100个链接
  • 链接的
    url
    img src
    页面标题
    域名
    的记录保存到MongoDB
  • 以下是我努力实现的目标:

    • 如果该图像不再位于100个刮取的链接中,我想将其从数据库中删除
    • 如果图像仍在100个已删除链接中,但详细信息已更改(例如,新页面标题),我希望找到
      mongodb
      记录并更新它
    • 如果图像不存在,我想创建一个新记录
    我遇到的麻烦是删除那些没有被删除的条目。实现这一目标的最佳方式是什么

    到目前为止,我的代码成功地检查了条目是否存在,并更新了它们。这是删除不再相关的记录,我遇到了麻烦。Pastebin链接如下:


    您需要为项目添加时间戳(并在每次刮取时更新),定期删除一段时间内未更新的项目,或者需要将项目与特定查询关联起来。在后一种情况下,您将收集以前与查询关联的所有项,并在新结果出现时将它们标记出来。需要删除列表末尾未标记的任何项目。

    另一种可能性是使用mongodb 2.4中的新TTL索引选项,允许您设置文档的生存时间

    这将使服务器随着时间的推移使它们过期,而不必执行昂贵的大型删除执行

    另一个优化是对集合使用power of 2选项,以避免写入、删除周期创建的内存碎片过多