定義
- convertToCapped
- convertToCappedコマンドは、既存の Capped 以外のコレクションを同じデータベース内の Capped コレクションに変換します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです 
- MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン 
- MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン 
構文
このコマンドの構文は、次のとおりです。
db.runCommand(    {      convertToCapped: <collection>,      size: <capped size>,      writeConcern: <document>,      comment: <any>    } ) 
コマンドフィールド
このコマンドは、次のフィールドを使用します。
| フィールド | 説明 | 
|---|---|
| convertToCapped | 変換する既存のコレクションの名前。 | 
| サイズ | 上限付きコレクションの最大サイズ(バイト単位)。 | 
| writeConcern | 任意。 コマンドの  | 
| 
 | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。 
 コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 | 
convertToCappedは既存のコレクション( <collection> )を受け取り、 size引数( <capped size> )で指定される最大サイズの Capped コレクションに変換します。
変換プロセス中に、 convertToCappedコマンドは次の動作を示します。
- MongoDB は元のコレクション内のドキュメントを自然な順序で走査し、ドキュメントを新しい Capped コレクションにロードします。 
- Capped コレクションに指定された - capped sizeが元の Capped コレクションのサイズより小さい場合、MongoDB は挿入順序、または最初に追加された順序で、Capped コレクション内のドキュメントを上書きします。
- 内部的には、コレクションを変換するために、MongoDB は次の手順を使用します - cloneCollectionAsCappedコマンドは、Cappedコレクションを作成し、データをインポートします。
- MongoDB は元のコレクションを削除します。 
- renameCollectionは、新しい Capped コレクションの名前を元のコレクションの名前に変更します。
 
- これにより、操作中はデータベースの排他ロックが保持されます。同じデータベースをロックする他の操作は、操作が完了するまでブロックされます。データベースをロックする操作の場合、「一般的なクライアント操作によって取得されるロック」を参照してください。 
警告
convertToCappedは、 _idフィールドのインデックス以外では、元のコレクションから新しいコレクションにインデックスを再作成しません。 このコレクションにインデックスが必要な場合は、変換の完了後にこれらのインデックスを作成する必要があります。
例
コレクションの変換
次の例では、 db.collection.insertOne()を使用してeventsコレクションを作成し、 db.collection.stats()を使用してコレクションに関する情報を取得します。
db.events.insertOne( { click: 'button-1', time: new Date() } ) db.events.stats() 
MongoDB は以下を返します。
{         "ns" : "test.events",         ...         "capped" : false,         ... } 
eventsコレクションを Capped コレクションに変換し、更新されたコレクション情報を表示するには、次のコマンドを実行します。
db.runCommand( { convertToCapped: 'events', size: 8192 } ) db.events.stats() 
MongoDB は以下を返します。
{      "ns" : "test.events",      ...      "capped" : true,      "max" : Long("9223372036854775807"),      "maxSize" : 8192,      ... } 
convertToCappedは、 _idフィールドのインデックス以外では、元のコレクションから新しいコレクションにインデックスを再作成しません。 このコレクションにインデックスが必要な場合は、変換の完了後にこれらのインデックスを作成する必要があります。