MongoDBの上限付きコレクション(Capped Collection)は使える?作成方法と動作を実例で解説
MongoDBの上限付きコレクション(Capped Collection)とは?
はい、MongoDBではcapped(上限付き)コレクションを使用できます。Cappedコレクションは固定サイズのコレクションであり、挿入順に基づいてドキュメントを挿入・取得する高スループットな操作をサポートするのが特徴です。
コレクションが指定したサイズまたはドキュメント数の上限に達すると、最も古いドキュメントから自動的に削除され、新しいドキュメントが追加されていきます。そのため、ログ管理やキャッシュのように「最新データだけを保持したい」ケースに適しています。
Cappedコレクションの作成方法
db.createCollection()メソッドを使い、capped : true を指定することで固定サイズのコレクションを作成できます。size(バイト単位の最大サイズ)や max(最大ドキュメント数)も同時に設定可能です。
> db.createCollection("demo539", { capped : true, size :100, max : 4 } );
{ "ok" : 1 }ドキュメントの挿入
次に、insertOne()メソッドを使って5件のドキュメントを順番に挿入してみましょう。今回は max : 4 と設定しているため、5件目を挿入した時点で最も古いドキュメントが自動的に削除されます。
> db.demo539.insertOne({"Name":"Chris"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c9094ef4dcbee04fbbc09")
}
> db.demo539.insertOne({"Name":"David"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c9098ef4dcbee04fbbc0a")
}
> db.demo539.insertOne({"Name":"Bob"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c909bef4dcbee04fbbc0b")
}
> db.demo539.insertOne({"Name":"Sam"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c909eef4dcbee04fbbc0c")
}
> db.demo539.insertOne({"Name":"Carol"});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c90a4ef4dcbee04fbbc0d")
}find()メソッドで全ドキュメントを表示する
コレクション内のすべてのドキュメントを表示するには、find()メソッドを使用します。
> db.demo539.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e8c9098ef4dcbee04fbbc0a"), "Name" : "David" }
{ "_id" : ObjectId("5e8c909bef4dcbee04fbbc0b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e8c909eef4dcbee04fbbc0c"), "Name" : "Sam" }
{ "_id" : ObjectId("5e8c90a4ef4dcbee04fbbc0d"), "Name" : "Carol" }実行結果からわかること
出力結果を見ると、最初に挿入した「Chris」のドキュメントは自動的に削除され、最新の4件(David、Bob、Sam、Carol)だけが残っていることが確認できます。これがCappedコレクションの基本動作です。上限を超えた古いデータがFIFO(先入れ先出し)方式で排除されるため、常に直近のデータだけを効率的に保持したいシステムに最適です。
-
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