インデックスによりクエリを効率的に解決することができます。 インデックスがないと、MongoDB はコレクションのすべてのドキュメントをスキャンして、 クエリ文にマッチするドキュメントを選択しなければなりません。 このスキャンは非常に非効率的で、MongoDB は大量のデータを処理する必要があります。
インデックスは特別なデータ構造で、データセットの小さな部分を簡単に移動できる形で保存します。
createIndex()メソッド
インデックスを作成するには、MongoDB の createIndex() メソッドを使用する必要があります。
構文
createIndex()メソッドの基本構文は次のとおりです().
>db.COLLECTION_NAME.createIndex({KEY:1})
ここで key はインデックスを作成するフィールド名で、1 は昇順の場合です。
Example
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
createIndex() メソッドでは、複数のフィールドを渡すことができ、複数のフィールドにインデックスを作成します。
>db.mycol.createIndex({"title":1,"description":-1})>
このメソッドは、オプション(任意)のリストを受け付けることができます。 以下はそのリストです。 –
Parameter | Type | Description |
---|---|---|
background | Boolean | Built the index in background so that building an other database activities block is not a background。 バックグラウンドで構築するには、true を指定します。 デフォルト値は false です。 |
unique | Boolean | インデックス内の既存の値と一致するインデックス キーまたはキーのドキュメントの挿入をコレクションが受け付けないように一意のインデックスを作成します。 一意なインデックスを作成するには、true を指定します。 デフォルト値は false です。 |
name | string | インデックスの名前です。 未指定の場合、MongoDB はインデックスのフィールド名とソート順を連結してインデックス名を生成します。 | sparse | Boolean | true の場合、インデックスは指定したフィールドのドキュメントだけを参照するようになります。 これらのインデックスはより少ないスペースを使用しますが、いくつかの状況(特にソート)において異なる動作をします。 デフォルト値は false です。 |
expireAfterSeconds | integer | このコレクションで MongoDB がドキュメントを保持する時間を制御する TTL として、秒単位で値を指定します。 |
weights | document | weight は 1 から 99,999 までの数字で、スコアに関して他のインデックス化フィールドと比較して、そのフィールドの重要度を表します。 |
default_language | string | テキスト インデックスでは、ストップ ワードのリストとステマーおよびトークナイザーのルールを決定する言語です。 デフォルト値はEnglishです。 |
language_override | string | For a text index, specify the field of the document that contains, language to override the default language.テキストインデックスに対して、ドキュメント内のフィールド名を指定して、デフォルト言語を上書きします。 デフォルト値は language です。 |
The dropIndex() method
特定のインデックスを削除するには MongoDB の dropIndex() メソッドを使用します。
構文
DropIndex()メソッドの基本構文は次のとおりです().
>db.COLLECTION_NAME.dropIndex({KEY:1})
ここで key はインデックスを作成したいファイル名、1 は昇順の場合です。 降順でインデックスを作成するには、-1 を使用する必要があります。
例
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
The dropIndexes() メソッド
このメソッドは、コレクション上の複数の(指定した)インデックスを削除するものです。
Syntax
DropIndexes()メソッドの基本構文は次のとおりです() –
>db.COLLECTION_NAME.dropIndexes()
例
次のように mycol コレクションに 2 つのインデックスを作成したと仮定します。 –
> db.mycol.createIndex({"title":1,"description":-1})
次の例は、上記で作成した mycol のインデックスを削除します –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
getIndexes() メソッド
このメソッドは、コレクション内のすべてのインデックスの記述を返します。
Syntax
以下は、getIndexes() メソッドの基本的な構文です。
> db.mycol.createIndex({"title":1,"description":-1})
次の例では、コレクション mycol のすべてのインデックスを取得します –
> db.mycol.getIndexes()>