Ett par förslag:
Du kan använda en kombination av url och det datum som du kommer åt (åtminstone en del av datetime-objektet) som _id för dessa objekt eftersom vad jag kan säga så planerar du att skrapa varje url en gång i månaden.
Exempel:
{
"_id": {
"url": "www.google.com",
"date": ISODate("2013-03-01"),
},
// Other attributes
}
Detta ger prestanda, unikhet och frågautdelning (se det här 4sq blogginlägget ). Du kan fråga att göra något som:
db.collection.find({
"_id": {
"$gte": {
"url": yourUrl,
"date": rangeStart
},
"$lt": {
"url": yourUrl,
"date": rangeEnd
},
}
})
Vilket ger utmärkta, snyggt sorterade (efter url SEN efter datum, vilket verkar vara precis vad du vill ha) resultat. Du kan också använda det här indexet för att utföra täckta frågor (över _id-fältet) om du bara vill ha en snygg uppsättning av alla webbadresser och månader som du har skrapat (detta kan göra dig bra att gå igenom varje webbadress en i taget) .
Om du har specifika attribut för dokumentet som du är intresserad av att jämföra (headers.server
till exempel) och en specifik jämförelse du vill göra för dem (t.ex. letar efter eventuella ökningar i versionsnummer), skulle jag använda någon form av regex för att ta tag i de element som är relevanta för versionsnummer (en snabb och smutsig kan helt enkelt hämta alla numeriska element) och rita dem för varje webbadress (jag antar att detta skulle låta dig visualisera ändringar i serverprogramvaran över tid). Du kan lika gärna rapportera när något av dessa attribut ändras genom att skanna dem i ordning och starta någon händelse när strängarna inte var identiska (kanske rapportera ändringen eller den numeriska delen av ändringen).