インデックスの作成
インデックスは、MongoDB でクエリを効率的に実行するのに役立ちます。アプリケーションが同じフィールドに対して繰り返しクエリを実行する場合は、それらのフィールドにインデックスを作成して、クエリのパフォーマンスを向上させることができます。
インデックスを作成するには、 createIndex()
shell メソッドまたはドライバーの同等のメソッドを使用します。このページでは、MongoDB Shell とドライバーの例を示します。
このタスクについて
MongoDB シェルまたはドライバーでインデックス作成コマンドを実行すると、同じ仕様のインデックスが存在しない場合にのみ MongoDB はインデックスを作成します。
インデックスを使用するとクエリのパフォーマンスは向上しますが、インデックスを追加すると書込み操作の動作に悪影響が生じます。書込みと読み取りの比率が高いコレクションでは、挿入およびアップデートのたびにすべてのインデックスを更新する必要があるため、インデックスの使用コストは高くなります。
手順
➤ このページの例の言語を設定するには、右側のナビゲーション ペインにある [言語の選択] ドロップダウン メニューを使用します。
mongosh
でインデックスを作成するには、db.collection.createIndex()
を使用します。
db.collection.createIndex( <key and index type specification>, <options> )
.NET ドライバー を使用してインデックスを作成するには、MongoCollection.CreateIndex を使用します。
collection.CreateIndex( IndexKeys<collection>.<key and index type specification>, <options> );
非同期 Java ドライバーを使用してインデックスを作成するには、com.mongodb.async.client.MongoCollection.createIndex を使用します。
collection.createIndex( <key and index type specification>, <options>, <callbackFunction>)
Java ドライバーを使用してインデックスを作成するには、com.mongodb.client.MongoCollection.createIndex を使用します。
collection.createIndex(<key and index type specification>, <options>)
Kotlin コルーチン ドライバー を使用してインデックスを作成するには、 MongoCollection.createIndex()使用して複数のドキュメントを挿入できます。
collection.createIndex(<key and index type specification>, <options>)
Motor ドライバーを使用してインデックスを作成するには、motor.motor_asyncio.AsyncIOMotorCollection.create_index
を使用します。
await db.collection.create_index([(<key and index type specification>)], <options> )
Node.JS ドライバーを使用してインデックスを作成するには、 createIndex()
を使用します。
collection.createIndex( { <key and index type specification> }, function(err, result) { console.log(result); callback(result); }
Perl ドライバー を使用してインデックスを作成するには、create_one() を使用します。
my $indexes = $db->get_collection( <collection> )->indexes; $indexes->create_one( [ <key and index type specification> ] );
PHP ドライバーを使用してインデックスを作成するには、MongoDB\\Collection::createIndex()
を使用します。
$collection->createIndex(<key and index type specification>, <options>);
Python ドライバを使ってインデックスを作成するには、pymongo.collection.create_index メソッドを使います。
db.collection.create_index([(<key and index type specification>)], <options> )
Ruby ドライバー を使用してインデックスを作成するには、Mongo::Index::View#create_one を使用します。
client[:collection].indexes.create_one({ <key and index type specification> }, {options})
Scala ドライバーを使用してインデックスを作成するには、org.mongodb.scala.model.Indexes を使用します。
collection.createIndex(<key and index type specification>)
例
この例では、name
フィールドに単一キーの降順インデックスを作成します。
db.collection.createIndex( { name: -1 } )
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.CreateIndex( IndexKeys<collection>.Descending("name") );
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.createIndex(Indexes.descending("name"), someCallbackFunction());
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.createIndex(Indexes.descending("name"));
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.createIndex(Indexes.descending("name"))
この例では、name
フィールドに単一キーの降順インデックスを作成します。
await collection.create_index([("name", pymongo.DESCENDING)])
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.createIndex( { name : -1 }, function(err, result) { console.log(result); callback(result); }
この例では、name
フィールドに単一キーの降順インデックスを作成します。
my $indexes = $db->get_collection( <collection> )->indexes; $indexes->create_one( [ name => -1 ] );
この例では、name
フィールドに単一キーの降順インデックスを作成します。
$collection->createIndex(['name' => -1]);
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.create_index([("name", pymongo.DESCENDING)])
この例では、name
フィールドに単一キーの降順インデックスを作成します。
client[:collection].indexes.create_one({ name: -1 })
この例では、name
フィールドに単一キーの降順インデックスを作成します。
collection.createIndex(descending("name"))
注意
インデックスのソート順
降順の単一フィールドインデックスを使用すると、インデックスのパフォーマンスに影響が及ぶ可能性があります。 最高のパフォーマンスを得るには、昇順の単一フィールド インデックスのみを使用してください。
結果
インデックスが作成されたことを確認するには、mongosh
を使用して db.collection.getIndexes()
メソッドを実行します。
db.collection.getIndexes()
出力:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { name: -1 }, name: 'name_-1' } ]
ドライバーを使用して作成されたインデックスの情報を表示するには、「ドライバーのドキュメント」を参照してください。
詳細
MongoDB Compass でインデックスを作成する方法については、Compass ドキュメントの「インデックスの管理」を参照してください。
インデックスが使用される頻度を確認するには、「インデックス使用状況の測定」を参照してください。
インデックスの名前を指定する方法については、「インデックス名の指定」を参照してください。
MongoDB がインデックスを構築する方法については、「インデックス構築プロセス」を参照してください。