Diff()在MongoDB中的两个集合之间

我做了研究。 如果这是一个重复的问题,我表示歉意,但是其他问题的解决scheme并不是真的适合我,所以我提出了一个新的问题。

用Javascript比较两个集合的最佳方法是什么?

我在这个Mongo文档格式中有成千上万的这些标题:

{ "url": "google.com", "headers": { "location": "http://www.google.com/", "content-type": "text/html; charset=UTF-8", "date": "Mon, 25 Mar 2013 18:12:08 GMT", "expires": "Wed, 24 Apr 2013 18:12:08 GMT", "cache-control": "public, max-age=2592000", "server": "gws", "content-length": "219", "x-xss-protection": "1; mode=block", "x-frame-options": "SAMEORIGIN" } } 

我今天跑了我的刮板。 我会在将来再次运行,并将其存储在第二个集合中。 另外,我希望能够比较三个特定的头对象,即serverx-aspnet-versionx-powered-by ,并检测是否有任何整数增量。

遍历两个集合并执行diff()的最好方法是什么?

我做对了吗? 任何build议将非常感激。

几点build议:

您可以使用url和date访问的date(至less是date时间对象的一部分)作为这些对象的_id,因为从我可以告诉你计划每个月刮一次URL。

例:

 { "_id": { "url": "www.google.com", "date": ISODate("2013-03-01"), }, // Other attributes } 

这产生性能,唯一性和查询分红(见这4sq博客文章 )。 你可以查询做如下的事情:

 db.collection.find({ "_id": { "$gte": { "url": yourUrl, "date": rangeStart }, "$lt": { "url": yourUrl, "date": rangeEnd }, } }) 

这产生了很好的,很好的sorting(按date,这似乎是正是你想要的结果)。 你也可以使用这个索引来执行覆盖查询(通过_id字段),如果你只是想要一个很好的一组所有的url和你刮了几个月(这可以很好地通过每个url一次) 。

如果你有比较感兴趣的文档的特定属性(例如headers.server )和你想为他们做的特定比较(例如寻找版本号的任何增量),我会使用某种正则expression式来抓取与版本号相关的元素(一个快速和肮脏的可能只是检索所有的数字元素),并为每个url(我假设这将让你可视化服务器软件的变化随着时间的推移)图表。 只要通过按顺序扫描这些属性并在string不相同的情况下设置一些事件(可能会报告更改或数字变化),就可以轻松地报告这些属性中的任何一个。

Interesting Posts