English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
固定集合固定サイズのループ集合であり、挿入順序に従います。これにより、高い性能の作成、読み取り、削除操作をサポートします。ループは、これは集合に割り当てられた固定サイズが尽きると、最も古いドキュメントを削除し始めることを意味し、明示的なコマンドを提供することなく行われます。
ドキュメントのサイズが増加する場合、ドキュメントの更新を制限します。固定集合は、ドキュメントがディスク上に分配されるサイズが増加しないように、ディスク上の順序でドキュメントを格納します。固定集合は、ログ情報、キャッシュデータ、またはその他の大容量データの格納に最適です。
上限のある集合を作成するには、通常のcreateCollectionコマンドを使用しますが、capped
オプションを設定します、true
および、集合の最大サイズ(バイト単位で指定)を指定できます。
>db.createCollection("cappedLogCollection",{capped:true,size:10000})
集合のサイズに加えて、max
パラメータ-制限集合内のドキュメント数-
>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000)
集合が制限されているか確認するには、以下を使用してくださいisCapped
コマンド-
>db.cappedLogCollection.isCapped()
既定の集合を上限の集合に変換する計画がある場合、以下のコードを使用して処理できます-
>db.runCommand({"convertToCapped":"posts",size:10000})
このコードは、現在のコレクションを以下のように変換しますposts
に設定してください。
デフォルトでは、上限コレクションに対する検索クエリは挿入順で結果を表示します。ただし、ドキュメントを逆順で取得したい場合は、以下を使用しますsort
以下のコードに示されるコマンド-
>db.cappedLogCollection.find().sort({$natural:-1)
上限のコレクションについて、他にも重要なポイントがあります-
上限コレクションからドキュメントを削除することはできません。
上限コレクションにはデフォルトのインデックスがありません。_idフィールドにもありません。
新しいドキュメントを挿入する際、MongoDBは実際にディスク上で新しいドキュメントを収容する場所を探す必要はありません。新しいドキュメントをコレクションの最後に盲目で挿入することができます。これにより、コレクション内の挿入操作が非常に高速になります。
同様に、ドキュメントを読み取るとき、MongoDBはディスク上と同じ順序でドキュメントを返します。これにより、読み取り操作が非常に高速です。