我正在尝试使用 Javascript 算法来循环遍历我的 MongoDB,搜索两个相同的 URL,并对 header 对象进行分析。
下面是该对象示例的片段:
{
"url": "www.professionalsupplementcenter.com",
"date": "Tue Mar 26 2013 15:08:31 GMT-0400 (EDT)",
"headers": {
"server": "Microsoft-IIS/7.5",
"x-aspnet-version": "4.0.30319",
"x-powered-by": "ASP.NET"
}
}
具体来说,我将有两个收藏。这两个集合是 MongoDB 中两个数据库的 HTTP header 抓取间隔两个月。我们将它们称为 todayScrape
和 twoMonthFromNowScrape
。通过这两个集合,我想比较它们的 header 对象,例如 server
、x-aspnet-version
和 x-powered-by
并查看这些数字中是否有任何升级,例如IIS/7.5
升级到 IIS/8.0
(将来)。
我没有任何代码可以显示,因为我根本不知道如何实现这个系统。我不知道从哪里开始。我想首先比较这两个URL,然后当程序识别出这两个URL都存在时,它会对这三个 header 对象进行具体比较。然后,它可以通过按顺序扫描这些属性来报告这些属性何时发生更改,并在字符串不相同时触发一些事件,例如 console.log("There has been a change")
。
有人可以给我一些关于从哪里开始的建议吗?我已经在这个问题上陷入困境几天了,陷入困境令人沮丧。我真的很想开始实现它,但我需要一些帮助。
最佳答案
您需要的第一件事是npm install mongodb
(如果您还没有)。然后在您的 app.js 文件中:
var mongodb = require('mongodb');
var Server = mongodb.Server('127.0.0.1', 27017, {});
new mongodb.Db('scraperapp', Server, {w: 1}).open(function(err, db){
var scrape = new mongodb.Collection(db, 'scrape');
var scrapeFuture = new mongodb.Collection(db, 'scrapeFuture');
scrape.find({url: {$exists: true}}).toArray(function(err, today_docs){
if(!today_docs) return;
var scrapeFn = function(i){
var today_doc = today_docs[i];
scrapeFuture.findOne({url: today_doc.url}, function(err, future_doc){
if(!future_doc) return;
if(today_doc.headers.server != future_doc.headers.server)
console.log(today_doc.url + ':servers different');
if(today_doc.headers['x-aspnet-version'] != future_doc.headers['x-aspnet-version'])
console.log(today_doc.url + ':x-aspnet-versions different');
if(today_doc.headers['x-powered-by'] != future_doc.headers['x-powered-by'])
console.log(today_doc.url + ':x-powered-by different');
if(today_docs[i+1]) scrapeFn(i+1);
});
}
scrapeFn(0);
});
});
关于javascript - 使用 Javascript 扫描 Mongo 数据库并在字符串不相同时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645574/