이미 샤딩된 컬렉션 에 새 고유 인덱스 생성할 수 있지만, 이는 인덱스 접두사로 샤드 키 포함된 경우에만 가능합니다.
이 작업에 대하여
인덱스 에 대한 고유성 제약 조건은 컬렉션 의 문서가 인덱싱된 필드 에 대해 고유한 값을 갖도록 합니다. 샤딩된 컬렉션 의 경우, MongoDB 인덱스 가 샤드 키 이거나 샤드 키 접두사로 포함하는 경우에만 고유성을 적용합니다.
이미 샤딩된 컬렉션 의 경우, 샤드 키 접두사로 포함되어 있지 않으면 다른 필드에 고유 인덱스 생성할 수 없습니다. 인덱스 샤드 키 접두사로 포함되어 있지 않은 경우, 명령을 실행 때 MongoDB createIndexes 오류를 반환합니다.
샤드 키 의 일부가 아닌 필드 에서 고유성을 유지하는 방법을 학습 임의 필드에 대한 고유 제약 조건을 참조하세요.
시작하기 전에
컬렉션 의 샤드 키 식별합니다. 샤드 키 를 보려면 메서드를
sh.status()실행 하고 출력에서 컬렉션 찾습니다.필드 의 고유성 제약 조건을 위반하는 기존 문서가 없는지 확인합니다. 샤드 에 중복 값이 있는 문서가 포함된 경우 인덱스 생성 작업은 중복이 없는 샤드에서는 성공할 수 있지만 중복이 있는 샤드 에서는 실패하여 샤드 간에 인덱스가 일관되지 않을 수 있습니다.
단계
다음 예시 region_id 필드 에 샤딩된 accounts.names 컬렉션 의 email 필드 에 고유 인덱스 생성합니다.
샤드 키 확인
sh.status() 메서드를 실행하고 accounts.names 출력에서 컬렉션 찾아 샤드 키 인지 확인합니다.region_id
sh.status()