Няколко предложения:
Можете да използвате комбинация от url и достъпната дата (поне част от обекта datetime) като _id за тези обекти, тъй като според това, което мога да кажа, планирате да изтривате всеки url веднъж месечно.
Пример:
{
"_id": {
"url": "www.google.com",
"date": ISODate("2013-03-01"),
},
// Other attributes
}
Това дава производителност, уникалност и дивиденти на заявките (вижте тази публикация в блог 4sq ). Можете да направите заявка, като направите нещо като:
db.collection.find({
"_id": {
"$gte": {
"url": yourUrl,
"date": rangeStart
},
"$lt": {
"url": yourUrl,
"date": rangeEnd
},
}
})
Което дава отлични, добре сортирани (по url СЛЕД това по дата, което изглежда е точно това, което искате) резултати. Можете също така да използвате този индекс, за да изпълнявате обхванати заявки (над полето _id), ако просто искате хубав набор от всички URL адреси и месеци, които сте изкопали (това може да ви настрои добре да преминавате през всеки URL адрес един по един) .
Ако имате конкретни атрибути на документа, които искате да сравните (headers.server
например) и конкретно сравнение, което искате да направите за тях (търсейки всяко увеличение в номерата на версиите например), бих използвал някакъв вид регулярен израз, за да взема елементите, свързани с номера на версията (бързо и мръсно може просто да извлече всички числови елементи) и ги начертайте на графика за всеки URL адрес (предполагам, че това ще ви позволи да визуализирате промените в сървърния софтуер с течение на времето). Бихте могли също толкова лесно да докладвате, когато някой от тези атрибути се промени, като ги сканирате по ред и зададете събитие, когато низовете не са идентични (може би след това докладвате промяната или цифровата част от промяната).