MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで複合マルチキーインデックスを作成する方法|コレクションへのインデックス設定手順

MongoDBのコレクションに複合マルチキーインデックス(Compound Multikey Index)を作成することで、複数のフィールドや配列内の要素に対して効率的な検索が可能になります。本記事では、実際のコマンド例を使いながら、複合マルチキーインデックスの作成手順をわかりやすく解説します。

複合マルチキーインデックスとは

複合マルチキーインデックスとは、複数のフィールドを組み合わせたインデックスであり、そのうち少なくとも1つのフィールドが配列である場合に「マルチキー」として動作します。これにより、ドット記法を使ってネストされた配列内のフィールドにもインデックスを付与できます。

インデックスの作成には ensureIndex() メソッドを使用します。なお、MongoDB 3.0以降では ensureIndex() は非推奨となっているため、最新の環境では同等の機能を持つ createIndex() の使用が推奨されます。

ステップ1:コレクションにインデックスを作成する

まず、id フィールドと、ネストされた配列内の details.userId フィールドに対して複合インデックスを作成します。昇順インデックスを示す値「1」を各フィールドに指定します。

> db.demo678.ensureIndex({id:1,"details.userId":1});
{
    "createdCollectionAutomatically" : true,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

出力結果から、コレクションが自動的に作成され(createdCollectionAutomatically: true)、インデックス数が1から2に増えたことが確認できます。

ステップ2:ドキュメントを挿入する

次に、insertOne() メソッドを使ってサンプルドキュメントを挿入します。このドキュメントには、オブジェクトの配列である details フィールドと otherDetails フィールドが含まれています。

> db.demo678.insertOne(
...     {
...        id:101,
...        "details" : [
...           {
...              "userId" : "1001",
...              "userName":"Chris"
...           },
...           {
...              "userId" : "1002",
...              "userName":"David"
...           }
...        ],
...        "otherDetails" : [
...           {
...              CountryName:"US",
...              EmailId:["Chris@gmail.com","David@gmail.com"]
...           }
...        ]
...     }
... );
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea4276904263e90dac943fc")
}

ステップ3:find()メソッドでドキュメントを表示する

作成したコレクション内のすべてのドキュメントを表示するには、find() メソッドを使用します。

> db.demo678.find();

上記のコマンドを実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5ea4276904263e90dac943fc"), "id" : 101, "details" : [
    { "userId" : "1001", "userName" : "Chris" },
    { "userId" : "1002", "userName" : "David" }
], "otherDetails" : [
    { "CountryName" : "US", "EmailId" : [ "Chris@gmail.com", "David@gmail.com" ] }
] }

まとめ

このように、ensureIndex()(または createIndex())に複数のフィールドを指定し、ドット記法でネストされた配列内のフィールドを含めることで、複合マルチキーインデックスを簡単に作成できます。配列フィールドを含むクエリを頻繁に実行する場合は、この手法を活用することで検索パフォーマンスを大幅に向上させることができます。

  1. Microsoft Edgeの「コレクション」機能を使いこなす方法【作成・追加・共有まで完全解説】

    Microsoft Edgeは、近年その高速性と高いパフォーマンスで評価を集めているWebブラウザです。他のブラウザにはない革新的な機能が数多く搭載されており、メインブラウザとして十分な実力を持っています。気になるWebページを見つけても、「ブックマークに保存するのは面倒」「スクリーンショットを撮るのもひと手間」と感じたことはありませんか?Microsoft Edgeの「コレクション」機能を使えば、Webを閲覧しながらアイデアやお気に入りを簡単に整理・管理できます。この記事では、Microsoft Edgeコレクションの基本から応用まで、知っておくべきすべての情報を解説します。Microsof

  2. Microsoft Edge Insiderで「コレクション」機能を使う方法|有効化からエクスポートまで徹底解説

    「コレクション(Collections)」は、Chromiumベースの新しいMicrosoft Edgeブラウザに搭載されている機能です。ウェブページから情報を手軽にまとめることを目的としており、テキスト・画像・リンクを専用のパネルに保存して、後から参照できるようになります。 コレクション機能は現在、Edge InsiderのCanaryチャンネルおよびDevチャンネルで利用可能です。ただし、初期状態では無効になっているため、実験用フラグを操作して手動で有効化する必要があります。 コレクション機能を有効化する方法 まずEdge Insiderを起動し、アドレスバーにedge://flagsと入