샤드 키 값 자체에 고유성을 시행하다 하려면 unique 매개변수를 true(으)로 sh.shardCollection() 메서드에 전달합니다.
이 작업에 대하여
샤드 키 의 고유 인덱스 샤드 키 의 개별 구성 요소가 아닌 전체 키 조합에 고유성을 적용합니다.
해시 샤드 키 사용할 때는 unique를 true로 지정할 수 없습니다.
unique: true을(를) 지정할 때 다음과 같은 제한 사항이 적용 .
컬렉션이 비어 있으면
sh.shardCollection()은 해당 인덱스가 아직 존재하지 않는 경우 샤드 키에 고유 인덱스를 생성합니다.Collection이 비어 있지 않은 경우
sh.shardCollection()를 사용하기 전에 인덱스를 먼저 만들어야 합니다.컬렉션에 샤드 키를 지원하는 인덱스가 있지만 해당 인덱스가 고유하지 않은 경우
sh.shardCollection()은(는) 오류를 반환합니다.
샤드 키가 접두사인 고유한 복합 인덱스를 가질 수 있지만 unique 매개변수를 사용하는 경우 컬렉션은 샤드 키에 있는 고유한 인덱스를 보유해야 합니다.
unique을 생략하거나 unique: false을 지정하는 경우, sh.shardCollection()는 컬렉션의 기존 인덱스를 변경하지 않습니다. 샤드 키 의 고유 인덱스 이미 존재하는 경우, 해당 인덱스 고유한 상태로 유지되며 샤딩된 클러스터 샤드 전체의 샤드 키 값에 고유성 제약 조건을 계속 시행하다.
샤딩된 컬렉션의 고유 인덱스에 적용 전체 제약 조건 설정하다 는 샤드 클러스터의 고유성 유지를 참조하세요.
시작하기 전에
샤드 키 값에 대한 고유성 제약 조건을 위반하는 기존 문서가 없는지 확인합니다.
단계
다음 예시 region_id에서 accounts.names 컬렉션 샤딩하고 샤드 키 값에 고유한 제약 조건을 적용합니다.
컬렉션을 샤딩합니다.
고유한 region_id 인덱스 에서 컬렉션 샤드 . unique 매개변수는 sh.shardCollection()의 세 번째 인수입니다.
sh.shardCollection( "accounts.names", { region_id: 1 }, true )