Một vài gợi ý:
Bạn có thể sử dụng kết hợp url và ngày được truy cập (ít nhất là một phần của đối tượng datetime) làm _id cho các đối tượng này vì từ những gì tôi có thể cho bạn biết kế hoạch cạo từng url mỗi tháng một lần.
Ví dụ:
{
"_id": {
"url": "www.google.com",
"date": ISODate("2013-03-01"),
},
// Other attributes
}
Điều này mang lại hiệu suất, tính duy nhất và lợi tức truy vấn (xem bài đăng blog 4sq này ). Bạn có thể truy vấn làm điều gì đó như:
db.collection.find({
"_id": {
"$gte": {
"url": yourUrl,
"date": rangeStart
},
"$lt": {
"url": yourUrl,
"date": rangeEnd
},
}
})
Điều này mang lại kết quả tuyệt vời, được sắp xếp độc đáo (theo url THÌ theo ngày, dường như chỉ là những gì bạn muốn). Bạn cũng có thể sử dụng chỉ mục này để thực hiện các truy vấn có liên quan (qua trường _id) nếu bạn chỉ muốn có một tập hợp đẹp của tất cả các url và tháng bạn đã cóp nhặt (điều này có thể giúp bạn thiết lập tốt để xem qua từng url một) .
Nếu bạn có các thuộc tính cụ thể của tài liệu mà bạn muốn so sánh (headers.server
ví dụ) và một phép so sánh cụ thể mà bạn muốn thực hiện cho chúng (tìm kiếm bất kỳ sự gia tăng nào về số phiên bản chẳng hạn), tôi sẽ sử dụng một số loại regex để lấy các phần tử liên quan đến số phiên bản (một cách nhanh chóng và bẩn thỉu có thể chỉ lấy tất cả phần tử số) và vẽ biểu đồ chúng cho từng url (tôi cho rằng điều này sẽ cho phép bạn hình dung các thay đổi đối với phần mềm máy chủ theo thời gian). Bạn có thể dễ dàng báo cáo bất cứ khi nào bất kỳ thuộc tính nào trong số này thay đổi bằng cách quét chúng theo thứ tự và thiết lập một số sự kiện khi các chuỗi không giống nhau (có thể sau đó báo cáo thay đổi hoặc phần số của thay đổi).