MongoDBでコレクションのインデックスを確認・表示する方法【getIndexes()の使い方を解説】
MongoDBでコレクションのインデックスを表示する方法
MongoDBでコレクションに設定されているインデックスを確認するには、getIndexes()メソッドを使用します。このメソッドを呼び出すことで、対象のコレクションに存在するすべてのインデックスの詳細情報を一覧形式で取得できます。
基本構文
db.yourCollectionName.getIndexes();
サンプルコレクションの作成
実際の動作を確認するため、ドキュメントを含むコレクションを作成してみましょう。以下のクエリでコレクションにドキュメントを挿入します。
> db.indexDemo.insertOne({"StudentName":"Larry","StudentAge":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f7c4f2f684a30fbdfd599")
}
> db.indexDemo.insertOne({"StudentName":"Mike","StudentAge":24});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f7c552f684a30fbdfd59a")
}挿入したドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。ここではドキュメントを1件追加してから、pretty()で整形して確認してみます。
> db.indexDemo.insertOne({"StudentName":"Carol","StudentAge":20});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f7c5e2f684a30fbdfd59b")
}
> db.indexDemo.find().pretty();
{
"_id" : ObjectId("5c8f7c4f2f684a30fbdfd599"),
"StudentName" : "Larry",
"StudentAge" : 21
}
{
"_id" : ObjectId("5c8f7c552f684a30fbdfd59a"),
"StudentName" : "Mike",
"StudentAge" : 24
}
{
"_id" : ObjectId("5c8f7c5e2f684a30fbdfd59b"),
"StudentName" : "Carol",
"StudentAge" : 20
}インデックスの作成
次に、createIndex()メソッドを使用してインデックスを作成します。以下の例では、「StudentName」と「StudentAge」の2つのフィールドに対して降順(-1)の複合インデックスを作成しています。
> db.indexDemo.createIndex({"StudentName":-1,"StudentAge":-1});実行結果は以下のとおりです。
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}「numIndexesBefore」が2で「numIndexesAfter」が3となっていることから、新しいインデックスが1つ正常に追加されたことがわかります。
getIndexes()でインデックスを表示する
それでは、コレクション「indexDemo」に設定されたインデックスを表示してみましょう。以下のクエリを実行します。
> db.indexDemo.getIndexes();
実行結果は以下のとおりです。
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.indexDemo"
},
{
"v" : 2,
"key" : {
"StudentName" : -1
},
"name" : "StudentName_-1",
"ns" : "test.indexDemo"
},
{
"v" : 2,
"key" : {
"StudentName" : -1,
"StudentAge" : -1
},
"name" : "StudentName_-1_StudentAge_-1",
"ns" : "test.indexDemo"
}
]
出力結果の見方
getIndexes()の出力には、以下の情報が含まれています。
- v:インデックスのバージョン
- key:インデックス対象のフィールドと、昇順(1)・降順(-1)の指定
- name:インデックスの名前
- ns:インデックスが属するデータベース名とコレクション名(名前空間)
このように、MongoDBが自動的に作成する「_id」のデフォルトインデックスに加えて、createIndex()で作成したインデックスも正しく登録されていることを確認できます。インデックスの設定状況を把握することで、クエリのパフォーマンスチューニングにも役立ちます。
-
MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法
MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加する方法MongoDBで既存のドキュメントに新しいフィールドを追加するには、集計パイプラインの$addFieldsステージを使用します。まずは、サンプルとなるコレクションとドキュメントを作成してみましょう。サンプルコレクションの作成insertOne()メソッドを使用して、ドキュメントを1件ずつ挿入します。> db.demo712.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea85f675d33e20ed1
-
【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法
MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem