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