いくつかの提案:
これらのオブジェクトの_idとして、URLとアクセスされた日付(少なくともdatetimeオブジェクトの一部)の組み合わせを使用できます。これは、月に1回各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、日付、および希望どおりのように見える)結果が得られます。取得したすべてのURLと月の適切なセットが必要な場合は、このインデックスを使用して(_idフィールドで)対象クエリを実行することもできます(これにより、各URLを一度に1つずつ確認できるように設定できます) 。
比較したいドキュメントの特定の属性がある場合(headers.server
たとえば)そしてあなたがそれらのためにやりたい特定の比較(たとえばバージョン番号の増分を探す)、私はバージョン番号に関連する要素をつかむためにある種の正規表現を使用します(速くて汚いものは単にすべてを取得するかもしれません数値要素)を作成し、URLごとにグラフ化します(これにより、サーバーソフトウェアへの変更を時間の経過とともに視覚化できると思います)。これらの属性のいずれかが変更された場合は、それらを順番にスキャンし、文字列が同一でないときにイベントを発生させることで、同じように簡単にレポートできます(おそらく、変更または変更の数値部分をレポートします)。