MongoDBで既存のコレクションをCappedコレクションに変換する方法
MongoDBでは、すでに存在する通常のコレクションをCappedコレクション(上限付きコレクション)へ変換できます。変換には runCommand() を使用します。runCommand() は、指定したデータベースコマンドを実行するためのヘルパーメソッドです。
Cappedコレクションとは
Cappedコレクションは、あらかじめ決めたサイズの上限を持つ特殊なコレクションです。挿入順が保持され、サイズの上限に達すると最も古いドキュメントから自動的に上書きされます。ログやキャッシュなど、最新データだけを保持したいケースに適しています。
1. テスト用コレクションとドキュメントの作成
まず、ドキュメントを含むコレクションを作成しましょう。ここでは demo416 というコレクションに3件のドキュメントを挿入します。
> db.demo416.insertOne({"StudentName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e723a7bb912067e57771adf")
}
> db.demo416.insertOne({"StudentName":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e723a81b912067e57771ae0")
}
> db.demo416.insertOne({"StudentName":"Sam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e723a84b912067e57771ae1")
}
2. find()メソッドでドキュメントを確認
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo416.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e723a7bb912067e57771adf"), "StudentName" : "David" }
{ "_id" : ObjectId("5e723a81b912067e57771ae0"), "StudentName" : "Mike" }
{ "_id" : ObjectId("5e723a84b912067e57771ae1"), "StudentName" : "Sam" }
3. runCommand()でCappedコレクションに変換
コレクションをCappedコレクションに変換するには、convertToCapped コマンドを使用します。size パラメータには、コレクションの最大サイズをバイト単位で指定します。
> db.runCommand( { convertToCapped: 'demo416', size: 100} );
{ "ok" : 1 }
"ok" : 1 が返されれば、変換は成功です。
4. stats()で変換結果を確認
コレクションの詳細情報は stats() メソッドで確認できます。
> db.demo416.stats();
出力結果の中でも、特に注目すべきフィールドは以下の通りです。
{
"ns" : "test.demo416",
"size" : 132,
"count" : 3,
"avgObjSize" : 44,
"storageSize" : 16384,
"capped" : true,
"max" : -1,
"maxSize" : 256,
...
"ok" : 1
}
- capped : true — コレクションがCappedコレクションとして設定されていることを示します。
- maxSize : 256 — 実際に割り当てられたサイズ上限(バイト)です。指定した100バイトは、MongoDBの内部アロケーション単位に合わせて切り上げられています。
- max : -1 — ドキュメント数の上限が設定されていないことを意味します(サイズ上限のみ指定した場合)。
まとめ
db.runCommand({ convertToCapped: 'コレクション名', size: バイト数 }) を実行するだけで、既存のコレクションをCappedコレクションに変換できます。変換後は stats() の capped フィールドが true になっていることで確認できます。ログ管理やリアルタイムデータの保持など、固定サイズで運用したいコレクションがある場合にぜひ活用してください。
-
MongoDBでコレクションの名前を変更する方法(renameCollectionの使い方)
MongoDBで既存のコレクションの名前を変更したい場合、renameCollection()メソッドを使用します。この記事では、実際にコレクションを作成し、その名前を変更するまでの手順を順番に解説します。1. ドキュメントを含むコレクションを作成するまず、insertOne()メソッドを使ってサンプルドキュメントを挿入し、コレクション「demo690」を作成します。> db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne(
-
MongoDBコレクションにインデックスを作成する方法
MongoDBコレクションにインデックスを作成する方法MongoDBでインデックスを作成するには、createIndex()メソッドを使用します。インデックスを適切に設定することで、クエリの検索速度を大幅に向上させることができます。まず、ドキュメントを含むコレクションに対してインデックスを作成してみましょう。以下の例では、details.idフィールドに対して昇順(1)のインデックスを作成しています。> db.demo702.createIndex({details.id:1});{ createdCollectionAutomatically : tr