微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

使用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"
    }
}

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

迭代两个集合并执行diff()的最佳方法是什么?

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

解决方法:

一些建议:

你可以使用url和访问日期的组合(至少是datetime对象的一部分)作为这些对象的_id,因为我可以告诉你计划每月抓一个url.

例:

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

这会产生性能,唯一性和查询红利(见this 4sq blog post).你可以查询做类似的事情:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐