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

이 메서드는 옵션 목록 (선택 사항)도 허용합니다. 다음은 목록입니다-

매개 변수 유형 기술
배경 부울 인덱스를 빌드해도 다른 데이터베이스 활동이 차단되지 않도록 백그라운드에서 인덱스를 빌드합니다. 백그라운드에서 빌드하려면 true를 지정하십시오. 기본값은false.
독특한 부울 컬렉션이 인덱스 키가 인덱스의 기존 값과 일치하는 문서 삽입을 허용하지 않도록 고유 인덱스를 만듭니다. 고유 색인을 작성하려면 true를 지정하십시오. 기본값은false.
이름 색인의 이름입니다. 지정되지 않은 경우 MongoDB는 인덱싱 된 필드의 이름과 정렬 순서를 연결하여 인덱스 이름을 생성합니다.
부족한 부울 true 인 경우 색인은 지정된 필드가있는 문서 만 참조합니다. 이러한 인덱스는 공간을 덜 사용하지만 일부 상황 (특히 정렬)에서 다르게 작동합니다. 기본값은false.
expireAfterSeconds 정수 MongoDB가이 컬렉션에서 문서를 보관하는 기간을 제어하는 ​​TTL로 값 (초)을 지정합니다.
무게 문서 가중치는 1에서 99,999 사이의 숫자이며 점수 측면에서 다른 인덱싱 된 필드와 비교하여 필드의 중요성을 나타냅니다.
기본 언어 텍스트 인덱스의 경우 불용어 목록과 형태소 분석기 및 토크 나이저에 대한 규칙을 결정하는 언어입니다. 기본값은English.
language_override 텍스트 색인의 경우 기본 언어를 대체 할 언어를 포함하는 문서의 필드 이름을 지정하십시오. 기본값은 언어입니다.

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