기존 인덱스를 고유 인덱스로 변환
고유 인덱스 를 고유 인덱스 로 변환하려면 collMod
명령을 사용합니다. collMod
명령은 변환을 완료하기 전에 인덱싱된 필드 에 고유한 값이 포함되어 있는지 확인하는 옵션을 제공합니다.
시작하기 전에
1
단계
1
고유 인덱스로 변환할 인덱스를 준비합니다.
type
필드 인덱스에서 collMod
를 실행하고 prepareUnique
를 true
로 설정합니다.
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, prepareUnique: true } } )
prepareUnique
가 설정된 후에는 인덱스 키 항목을 복제하는 새 문서를 삽입할 수 없습니다. 예를 들어 다음 삽입 작업은 오류가 발생합니다.
db.apples.insertOne( { type: "Delicious", quantity: 20 } )
MongoServerError: E11000 duplicate key error collection: test.apples index: type_1 dup key: { type: "Delicious" }
2
고유 키 위반 여부 확인
type
필드의 고유 제약 조건을 위반하는 문서가 있는지 확인하려면 unique: true
및 dryRun:
true
를 사용하여 collMod
을 실행합니다.
db.runCommand( { collMod: "apples", index: { keyPattern: { type: 1 }, unique: true }, dryRun: true } )
MongoServerError: Cannot convert the index to unique. Please resolve conflicting documents before running collMod again. Violations: [ { ids: [ ObjectId("660489d24cabd75abebadbd0"), ObjectId("660489d24cabd75abebadbd2") ] } ]
3
4