繁体   English   中英

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

[英]Diff() between two collections in MongoDB

我做过研究。 如果这是一个重复的问题我很抱歉,但其他问题的解决方案并不是我的合适,因此,我提出了一个新问题。

使用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()的最佳方法是什么?

我做得对吗? 任何建议都会非常感激。

一些建议:

你可以使用url和访问日期的组合(至少是datetime对象的一部分)作为这些对象的_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
         },
    }
})

哪个产生优秀,排序很好(按日期,按日期,这似乎是你想要的)结果。 你也可以使用这个索引来执行覆盖的查询(在_id字段上),如果你只想要一个很好的所有网址和你已经抓过的月份(这可以很好地让你很好地通过每个网址一次) 。

如果你有比较感兴趣的文档的特定属性(例如headers.server )和你想要为它们做的特定比较(例如寻找版本号的任何增量),我会使用某种正则表达式获取与版本号相关的元素(快速和脏的可能只是检索所有数字元素)并为每个URL绘制图形(我假设这可以让您可视化服务器软件随时间的变化)。 您可以通过按顺序扫描任何这些属性来轻松报告,并在字符串不相同时引发某些事件(可能随后报告更改或更改的数字部分)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM