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