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

MongoDBにおける配列へのインデックス作成方法をわかりやすく解説

はじめに

MongoDBでは、配列フィールドにインデックスを作成すると、配列内のすべての要素に対して自動的にインデックスが付けられます。これにより、配列内の個々の要素を条件としたクエリを高速に実行できます。このようなインデックスは「マルチキーインデックス」と呼ばれ、配列を扱うアプリケーションにおいて非常に重要な機能です。

本記事では、実際のコード例を通して、配列フィールドへのインデックス作成手順と、その動作確認方法を順を追って解説します。

テスト用コレクションの作成

まず、配列を含むドキュメントを持つコレクションを作成します。以下のクエリを実行してください。

> db.indexingForArrayElementDemo.insertOne({"StudentFavouriteSubject":["MongoDB","MySQL"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8acdca6cea1f28b7aa0816")
}

登録したドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.indexingForArrayElementDemo.find().pretty();

実行結果は以下の通りです。

{
    "_id" : ObjectId("5c8acdca6cea1f28b7aa0816"),
    "StudentFavouriteSubject" : [
        "MongoDB",
        "MySQL"
    ]
}

配列フィールドへのインデックス作成

MongoDBで配列にインデックスを付けるには、通常のフィールドと同じようにインデックス作成コマンドを実行します。なお、ensureIndex()は非推奨となっているため、現在のバージョンではcreateIndex()の使用が推奨されます。

> db.indexingForArrayElementDemo.createIndex({"StudentFavouriteSubject":1});

実行結果は以下の通りです。

{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

numIndexesAfterが1から2に増えていることから、インデックスが正常に作成されたことがわかります。この時点で、MongoDBは配列内の各要素("MongoDB"と"MySQL")それぞれに対してインデックスエントリを自動的に生成しています。

配列の個別要素を検索するクエリ

インデックス作成後は、配列内の特定の要素を条件としてドキュメントを検索できます。まずは"MongoDB"で検索してみましょう。

> db.indexingForArrayElementDemo.find({"StudentFavouriteSubject":"MongoDB"}).pretty();

実行結果:

{
    "_id" : ObjectId("5c8acdca6cea1f28b7aa0816"),
    "StudentFavouriteSubject" : [
        "MongoDB",
        "MySQL"
    ]
}

続いて、別の例として"MySQL"でも検索してみます。

> db.indexingForArrayElementDemo.find({"StudentFavouriteSubject":"MySQL"}).pretty();

実行結果:

{
    "_id" : ObjectId("5c8acdca6cea1f28b7aa0816"),
    "StudentFavouriteSubject" : [
        "MongoDB",
        "MySQL"
    ]
}

いずれのクエリも、配列内の一致する要素を持つドキュメントを正しく返していることが確認できます。

まとめ

MongoDBでは、配列フィールドに対してcreateIndex()を実行するだけで、配列の全要素を対象としたマルチキーインデックスが自動的に作成されます。これにより、配列内の個々の要素による検索が効率化され、大規模なコレクションでも高速なクエリ処理が可能になります。配列検索を頻繁に行うアプリケーションでは、ぜひインデックスの活用を検討してください。

  1. MongoDBで配列の配列(ネストされた配列)をクエリする方法

    MongoDBで配列の配列をクエリするには?MongoDBで「配列の中に配列が格納されているデータ」(配列の配列)を検索するには、$in 演算子と $elemMatch 演算子を組み合わせて使用します。この記事では、実際にサンプルコレクションを作成しながら、具体的なクエリの書き方を順番に解説していきます。1. サンプルコレクションの作成まずは、ドキュメントを含むコレクションを作成しましょう。ドキュメントの挿入には insertOne() メソッドを使用します。以下のクエリを実行します。> db.arrayOfArraysDemo.insertOne({EmployeeName:Larry

  2. MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方

    MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、