Docs Menu
Docs Home
/ /

기존 샤드 컬렉션에 고유 인덱스 생성

이미 샤딩된 컬렉션 에 새 고유 인덱스 생성할 수 있지만, 이는 인덱스 접두사로 샤드 키 포함된 경우에만 가능합니다.

인덱스 에 대한 고유성 제약 조건은 컬렉션 의 문서가 인덱싱된 필드 에 대해 고유한 값을 갖도록 합니다. 샤딩된 컬렉션 의 경우, MongoDB 인덱스 가 샤드 키 이거나 샤드 키 접두사로 포함하는 경우에만 고유성을 적용합니다.

이미 샤딩된 컬렉션 의 경우, 샤드 키 접두사로 포함되어 있지 않으면 다른 필드에 고유 인덱스 생성할 수 없습니다. 인덱스 샤드 키 접두사로 포함되어 있지 않은 경우, 명령을 실행 때 MongoDB createIndexes 오류를 반환합니다.

샤드 키 의 일부가 아닌 필드 에서 고유성을 유지하는 방법을 학습 임의 필드에 대한 고유 제약 조건을 참조하세요.

  • 컬렉션 의 샤드 키 식별합니다. 샤드 키 를 보려면 메서드를 sh.status() 실행 하고 출력에서 컬렉션 찾습니다.

  • 필드 의 고유성 제약 조건을 위반하는 기존 문서가 없는지 확인합니다. 샤드 에 중복 값이 있는 문서가 포함된 경우 인덱스 생성 작업은 중복이 없는 샤드에서는 성공할 수 있지만 중복이 있는 샤드 에서는 실패하여 샤드 간에 인덱스가 일관되지 않을 수 있습니다.

다음 예시 region_id 필드 에 샤딩된 accounts.names 컬렉션 의 email 필드 에 고유 인덱스 생성합니다.

1

sh.status() 메서드를 실행하고 accounts.names 출력에서 컬렉션 찾아 샤드 키 인지 확인합니다.region_id

sh.status()
2

mongosh mongos 를 인스턴스 에 연결하고 고유 인덱스 생성합니다. 샤드 키 을 복합 region_id 인덱스 의 접두사로 포함합니다.

db.names.createIndex(
{ region_id: 1, email: 1 },
{ unique: true }
)
region_id_1_email_1

돌아가기

샤드 컬렉션

이 페이지의 내용