Beberapa saran:
Anda dapat menggunakan kombinasi url dan tanggal diakses (setidaknya sebagian dari objek datetime) sebagai _id untuk objek-objek ini karena dari apa yang saya dapat katakan Anda berencana untuk mengikis setiap url sebulan sekali.
Contoh:
{
"_id": {
"url": "www.google.com",
"date": ISODate("2013-03-01"),
},
// Other attributes
}
Ini menghasilkan kinerja, keunikan, dan dividen kueri (lihat postingan blog 4sq ini ). Anda dapat meminta melakukan sesuatu seperti:
db.collection.find({
"_id": {
"$gte": {
"url": yourUrl,
"date": rangeStart
},
"$lt": {
"url": yourUrl,
"date": rangeEnd
},
}
})
Yang menghasilkan hasil yang sangat baik, diurutkan dengan baik (berdasarkan url MAKA menurut tanggal, yang tampaknya seperti yang Anda inginkan). Anda juga dapat menggunakan indeks ini untuk melakukan kueri yang dicakup (di atas bidang _id) jika Anda hanya ingin satu set yang bagus dari semua url dan bulan yang telah Anda gores (ini dapat membuat Anda siap untuk menelusuri setiap url satu per satu) .
Jika Anda memiliki atribut khusus dari dokumen yang ingin Anda bandingkan (headers.server
misalnya) dan perbandingan spesifik yang ingin Anda lakukan untuk mereka (mencari kenaikan apa pun dalam nomor versi misalnya), saya akan menggunakan semacam regex untuk mengambil elemen yang relevan dengan nomor versi (yang cepat dan kotor mungkin hanya mengambil semua elemen numerik) dan buat grafiknya untuk setiap url (saya berasumsi ini akan memungkinkan Anda memvisualisasikan perubahan pada perangkat lunak server dari waktu ke waktu). Anda dapat dengan mudah melaporkan setiap kali atribut ini berubah dengan memindainya secara berurutan dan mengaktifkan beberapa peristiwa ketika string tidak identik (mungkin kemudian melaporkan perubahan atau bagian numerik dari perubahan).