Docs Menu

上限付きコレクションの作成

Capped コレクションを作成するには、 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 は、すべての上限付きコレクションの size を、256 の倍数の最も近い整数に切り上げます(バイト単位)。

次の方法で、最大サイズが5,242,880バイトで、最大5 、 000ドキュメントを保存できるlog2という上限付きコレクションを作成します。

db.createCollection(
"log2",
{
capped: true,
size: 5242880,
max: 5000
}
)

重要

ドキュメントのmax数を指定した場合でも、 sizeフィールドは常に必須です。