convertToCapped
定義
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" : NumberLong("9223372036854775807"), "maxSize" : 8192, ... }
convertToCapped
は、 _id
フィールドのインデックス以外では、元のコレクションから新しいコレクションにインデックスを再作成しません。 このコレクションにインデックスが必要な場合は、変換の完了後にこれらのインデックスを作成する必要があります。