Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

テール可能カーソル

項目一覧

  • ユースケース
  • はじめる
  • 動作

デフォルトでは、クライアントがカーソル内のすべての結果を使い果たすと、MongoDB はカーソルを自動的に閉じます。 ただし、 の Cappedコレクションでは、クライアントが初期カーソルの結果を使い果たした後も開いたままの 追尾可能(tailable) カーソルを使用できます。 追尾可能 (tailable) カーソルは、 -fオプションを指定した tail Unix コマンドと概念上で同等です(「に従って」モード)。 クライアントがCappedコレクションに追加のドキュメントを挿入した後も、追尾可能 (tailable) カーソルはドキュメントの検索を続行します。

インデックスが実用的ではない、書込み (write) 量が多い Capped コレクションには、 追尾可能 (tailable) カーソル を使用します。 たとえば、MongoDBレプリケーションでは 追尾可能 (tailable) カーソル を使用してプライマリのoplog を追跡します。

注意

クエリがインデックス付きフィールドを対象とする場合は、追尾可能 (tailable) カーソルではなく、通常のカーソルを使用します。 クエリによって返されたインデックス付きフィールドの最後の値を追跡します。 新しく追加されたドキュメントを検索するには、クエリ条件のインデックス付きフィールドの最後の値を使用してコレクションを再度クエリします。 例:

db.<collection>.find( { indexedField: { $gt: <lastvalue> } } )

mongoshで追尾可能 (tailable) カーソルを作成するには、 cursor.tailable()を参照してください。

ドライバーの 追尾可能 (tailable) カーソル メソッド を確認するには、ドライバーのドキュメントを参照してください。

追尾可能 (tailable) カーソルに関連する次の動作を考慮してください。

  • 追尾可能 (tailable) カーソルはインデックスを使用しません。 ドキュメントは自然な順序で返されます。

  • 追尾可能 (tailable) カーソルはインデックスを使用しないため、クエリの初期スキャンはコストが高くなる可能性があります。 最初にカーソルを使い果たした後は、新しく追加されたドキュメントのその後の取得は低コストです。

  • 現在の位置にあるデータが新しいデータによって上書きされると、追尾可能 (tailable) カーソルが無効になる可能性があります。 たとえば、データ挿入の速度がカーソルの反復速度よりも高速な場合、このような状況が発生する可能性があります。

戻る

クエリシェイプ