使用Javascript扫描Mongo数据库,并在string不相同时设置事件

我正在尝试使用Javascriptalgorithm循环我的MongoDB,search两个标识的URL,并对标题对象进行分析。

下面是这个对象的一个​​例子的一个片段:

{ "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头部擦除数据库。 我们todayScrape给他们todayScrape电话和twoMonthFromNowScrape 。 通过这两个集合,我想比较它们的头对象, x-aspnet-version serverx-aspnet-versionx-powered-by ,看看这些数字是否有升级,EG IIS/7.5升级到IIS/8.0 (在将来)。

我没有任何代码可以显示,因为我不知道如何实现这个系统。 我不知道从哪里开始。 我想先比较这两个URL,然后当程序确定这两个URL都存在时,它会对这三个头对象进行特定的比较。 然后,只要按顺序对这些属性进行扫描,就可以报告这些属性,并在string不相同的情况下引发一些类似console.log("There has been a change")事件。

任何人都可以给我任何build议从哪里开始? 我被困在这个问题上几天,被卡住了一直令人沮丧。 我真的想开始实施它,但我需要一些帮助。

你需要的第一件事是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); }); });