0

投稿のコレクションがあります(pseudo-json :-)を参照):

[
  {"title":"First","created":"2012-10-04 01:00:00"},
  {"title":"Second","created":"2012-10-04 03:30:00"},
  {"title":"Third","created":"2012-10-02 02:00:00"}
]

「2012-10-04」の投稿ページにいますが、「次のページ」ボタンを表示するためだけに、古い投稿があるかどうかを知りたいです。

私はこのようなクエリについて考えることができます:

db.posts.find({"created":{$lt:ISODate("2012-10-04")} }).limit(1);

私はまだそれを試してみる必要がありますが、それはうまくいくと思います...実際に私の質問は:

そのパフォーマンスはどうですか?コレクション内の何十億ものドキュメントと同じ速度で実行されますか?

4

1 に答える 1

1

必要に応じて数十億のコレクションをシャーディングすると仮定すると、比較的適切に拡張できる「作成済み」のインデックスがある場合。実行するクエリの種類に関係なく、インデックスの有無にかかわらず、より大きなデータセットでは時間がかかります。Bツリーウォークのパフォーマンスプロファイルが、生のテーブルスキャンよりも大幅に優れているだけです。

クエリは制限のない範囲のクエリであり、指定された日付より古いドキュメントが見つかった場合に返される可能性があるため、実際には理想的です。

要するに、はい、これは適切に機能し、シャーディングでスケーリングします。

于 2012-10-12T13:19:14.707 に答える