convertToCapped
convertToCapped
convertToCapped
コマンドは、既存の Capped 以外のコレクションを同じデータベース内の Capped コレクションに変換します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
{ convertToCapped: <collection>, size: <capped size>, writeConcern: <document>, comment: <any> }
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | 説明 |
---|---|
convertToCapped | 変換する既存のコレクションの名前。 |
サイズ | 上限付きコレクションの最大サイズ(バイト単位)。 |
writeConcern | 任意。 コマンドの drop 書込み保証( write concern ) を表すドキュメント。デフォルトの書込み保証を使用する場合は省略します。 |
comment | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
convertToCapped
は既存のコレクション( <collection>
)を受け取り、 size
引数( <capped size>
)で指定される最大サイズの Capped コレクションに変換します。
変換プロセス中に、 convertToCapped
コマンドは次の動作を示します。
- MongoDB は、元のコレクション内のドキュメントを次の場所で走査します:
- は自然な順序、ドキュメントを新しい Capped コレクションにロードします。
- Capped コレクションに指定された
capped size
が - 元の Capped コレクションのサイズより小さい場合、MongoDB は挿入順序、または先出し順序に基づいて、Capped コレクション内のドキュメントを上書きします。
- 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" : NumberLong("9223372036854775807"), "maxSize" : 8192, ... }
convertToCapped
は、 _id
フィールドのインデックス以外では、元のコレクションから新しいコレクションにインデックスを再作成しません。 このコレクションにインデックスが必要な場合は、変換の完了後にこれらのインデックスを作成する必要があります。