English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB インデックス

インデックスはクエリの効率的な解析をサポートします。インデックスがない場合、MongoDBはクエリと一致するドキュメントを選択するためにコレクション内の各ドキュメントをスキャンする必要があります。このスキャンは非常に効率が悪く、大量のデータを処理する必要があります。
インデックスはデータセットの一部を簡単に巡回できる形式でデータを格納する特別なデータ構造です。インデックスは特定のフィールドやフィールドセットの値を保持し、インデックス中で指定されたフィールドの値に基づいてソートされます。

createIndex()メソッド

インデックスを作成するには、MongoDBのcreateIndex()メソッドを使用する必要があります。

構文

createIndex()メソッドの基本的な構文は()です。

>db.COLLECTION_NAME.createIndex({KEY:1]

ここでは、KEYはインデックスを作成するためのフィールドの名前です。1昇順でインデックスを作成します。降順でインデックスを作成するには、-1。

>db.mycol.createIndex({"title":1]
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
>

次のcreateIndex()メソッドでは、複数のフィールドを渡して、複数のフィールド上にインデックスを作成できます。

>db.mycol.createIndex({"title":1,"description":-1]
>

createIndex()はオプションのパラメータを受け取り、以下のオプションのリストを受け取ります:

パラメータタイプ説明
backgroundBooleanインデックスの作成プロセスは他のデータベース操作をブロックします。"background"を指定すると、バックグラウンドでインデックスを作成できるため、"background"を追加します。   オプションのパラメータ。 "background" デフォルト値はfalse
uniqueBoolean作成されたインデックスがユニークかどうかです。trueに指定するとユニークインデックスを作成します。デフォルト値はfalse.
namestringインデックスの名前です。指定されていない場合、MongoDBは結合されたインデックスのフィールド名とソート順序に基づいてインデックス名を生成します。
dropDupsBoolean3.0+バージョンは廃止されました。ユニークインデックスの作成時に重複レコードを削除するかどうかを指定します。 false.
sparseBooleanドキュメントに存在しないフィールドのデータに対してインデックスを有効にしません;このパラメータは特に注意が必要です。 false.
expireAfterSecondsintegerを指定し、秒単位の数値でTTL設定を行います。
vindex versionインデックスのバージョン番号です。デフォルトのインデックスバージョンは、
weightsdocumentインデックスの重み値は、 1 から 99,999 の間で、インデックスの得点の重みを示します。
default_languagestringテキストインデックスの場合、このパラメータは停用語および語幹と語尾のルールのリストを決定します。
language_overridestringテキストインデックスの場合、このパラメータはドキュメント内に含まれるフィールド名を指定し、

dropIndex()メソッド

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"
}

dropIndexes()方法

此方法删除集合上的多个(指定)索引。

構文

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() メソッド

このメソッドは、コレクション中のすべてのインデックスの説明を返します。

構文

以下は getIndexes() メソッドの基本的な構文です-

db.COLLECTION_NAME.getIndexes()

例えば、名前付けされた mycol コレクションにインデックスを追加します2インデックスが以下のように表示されます-

> db.mycol.createIndex({"title":1,"description":-1]

以下の例では、コレクション mycol 中のすべてのインデックスを検索します-

> db.mycol.getIndexes()
[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		}
		"name" : "_id_",
		"ns" : "test.mycol"
	}
	{
		"v" : 2,
		"key" : {
			"title" : 1,
			"description" : -1
		}
		"name" : "title_"1_description_-1",
		"ns" : "test.mycol"
	}
]
>