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

MongoDB 인덱스

인덱스는 쿼리의 효율적인 해석을 지원합니다. 인덱스가 없으면 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+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

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