Een paar suggesties:
Je zou een combinatie van url en de datum kunnen gebruiken (ten minste een deel van het datetime-object) als de _id voor deze objecten, aangezien ik van plan ben om elke url één keer per maand te schrapen.
Voorbeeld:
{
"_id": {
"url": "www.google.com",
"date": ISODate("2013-03-01"),
},
// Other attributes
}
Dit levert prestaties, uniciteit en query-dividenden op (zie deze 4sq blogpost ). Je zou iets kunnen vragen als:
db.collection.find({
"_id": {
"$gte": {
"url": yourUrl,
"date": rangeStart
},
"$lt": {
"url": yourUrl,
"date": rangeEnd
},
}
})
Wat uitstekende, mooi gesorteerde (op url DAN op datum, dat lijkt precies wat je wilt) resultaten oplevert. Je zou deze index ook kunnen gebruiken om gedekte zoekopdrachten uit te voeren (via het _id-veld) als je gewoon een mooie set wilt van alle URL's en maanden die je hebt geschraapt (dit zou je kunnen instellen om elke url één voor één te doorlopen) .
Als u specifieke kenmerken van het document heeft die u wilt vergelijken (headers.server
bijvoorbeeld) en een specifieke vergelijking die u voor hen wilt doen (bijvoorbeeld op zoek naar een verhoging van versienummers), zou ik een soort regex gebruiken om de elementen te pakken die relevant zijn voor het versienummer (een snelle en vuile kan eenvoudig alle numerieke elementen) en zet ze voor elke url in een grafiek (ik neem aan dat u hiermee wijzigingen in serversoftware in de loop van de tijd kunt visualiseren). U kunt net zo gemakkelijk rapporteren wanneer een van deze kenmerken is gewijzigd door ze in volgorde te scannen en een gebeurtenis te starten wanneer de tekenreeksen niet identiek waren (misschien dan de wijziging of het numerieke deel van de wijziging te melden).