上限付きコレクションの作成
の上限付きコレクションを作成するには、 db.createCollection()
メソッドまたはcreate
コマンドのいずれかに capped
オプションを指定します。
Capped コレクションを明示的に作成する必要があります。 存在しないコレクションにデータを挿入して、上限付きコレクションを暗黙的に作成することはできません。
Capped コレクションを作成するときは、コレクションの最大サイズを指定する必要があります。 MongoDB は、コレクションに指定されたストレージを事前に割り当てます。 Capped コレクションのサイズには、内部オーバーヘッド用のスペースが含まれます。
オプションで、コレクションのドキュメントの最大数を指定できます。 MongoDB は、コレクションが最大ドキュメント数に達する前に最大サイズ制限に達した場合、古いドキュメントを排除します。
このタスクについて
一般的に、 TTL(Time To Live)インデックスは、Cappedコレクションよりも優れたパフォーマンスと柔軟性を提供します。 TTL インデックスは期限切れとなり、日付型フィールドの値とインデックスの TTL 値に基づいて、通常のコレクションからデータを削除します。
Capped コレクションでは書込み操作がシリアル化されるため、それ以外のコレクションよりも同時挿入、更新、削除のパフォーマンスは低くなります。 Capped コレクションを作成する前に、TTL インデックスで代替できないかを検討しましょう。
手順
次の例は、次の方法を示しています。
最大サイズの 上限付きコレクション の作成
次の方法で、最大サイズが100 、 000バイトであるlog
という上限付きコレクションを作成します。
db.createCollection( "log", { capped: true, size: 100000 } )
注意
size
フィールドに指定する値は、 0
より大きく、 1024^5
(1 PB )以下である必要があります。 MongoDB は、すべての Cappedコレクションのsize
を、256 の倍数の最も近い整数に切り上げます(バイト単位)。
最大ドキュメント数の上限付きコレクションの作成
log2
という上限付きコレクションを作成します。最大サイズは5 、 242 、 880バイトで、最大5 、 000ドキュメントを保存できます。
db.createCollection( "log2", { capped: true, size: 5242880, max: 5000 } )
重要
ドキュメントのmax
数を指定した場合でも、 size
フィールドは常に必須です。