기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
인덱스 속성: 고유
지원되는 인덱스 유형
| 옵션 | 3.6 | 4.0 | 5.0 | 8.0 | 탄력적 클러스터 |
|---|---|---|---|---|---|
| 단일 필드 | 예 | 예 | 예 | 예 | 예 |
| compound | 예 | 예 | 예 | 예 | 예 |
| 다중 키 | 예 | 예 | 예 | 예 | 예 |
고유 옵션을 사용하여 컬렉션의 문서 간에 필드(들)의 고유성을 보장합니다.
예제
다음 예제에서는 다음 샘플 문서에서 고유한 인덱스를 생성하는 방법을 보여줍니다.
{ "productId": "PROD133726", "sku": "SKU24224", "name": "Basic Printer", "manufacturer": "The Manufacturer", "tags": [ "printer", "basic", "electronics", "business" ], "barcodes": [ "542364671", "886330670", "437445606" ], "reviews": [ { "review_date": ISODate('2024-01-19T21:37:10.585Z'), ... } ], "material": "Polycarbonate", "color": "Space Gray", "supplier": { "supplierId": "SUP4", "location": { "type": "Point", "coordinates": [ -71.0589, 42.3601 ] } }, "productEmbedding": [ -0.019320633663838058, 0.019672111388113596 ], "lastUpdated": ISODate('2025-10-20T21:37:10.585Z') }
단일 필드
productId에 고유한 단일 필드 인덱스를 생성하여 동일한 productId가 둘 이상의 문서에 존재하지 않도록 합니다.
db.collection.createIndex( { "productId": 1 }, { name: "productId_unique", unique: true } )
복합
sku 및 제조업체에 고유한 복합 인덱스를 생성하여 두 개 이상의 문서에 동일한 sku 및 제조업체 조합이 존재하지 않도록 합니다.
db.collection.createIndex( { "sku": 1, "manufacturer": 1 }, { name: "sku_and_manufacturer_unique", unique: true } )
다중 키
바코드에 고유한 다중 키 인덱스를 생성하여 바코드 배열의 값이 두 개 이상의 문서에 존재하지 않도록 합니다.
db.collection.createIndex( { "barcodes": 1 }, { name: "barcodes_unique", unique: true } )
배열을 인덱싱하면 배열의 각 요소에 대한 인덱스 항목이 생성됩니다. 예를 들어 배열에 50개의 항목이 있는 경우 50개의 인덱스 항목이 있습니다. 따라서 고유한 다중 키 인덱스는 모든 개별 항목에 고유성을 적용합니다. 예를 들어 다음 문서는 값 배열 필드 인덱스의 고유한 제약 조건을 위반합니다.
{ "values": [ 1, 2, 3] } { "values": [ 3, 2 ] } --> 3 and 2 already exist { "values": [ 1 ] } --> 1 already exists
고유 인덱스가 있는 다음 동작에 유의하세요.
두 개(또는 그 이상)의 문서가 인덱싱된 필드에 대해 동일한 값을 갖는 기존 데이터에 고유한 인덱스를 생성하면 인덱스 빌드가 실패하고 다음 오류가 발생합니다.
could not create unique index: <collection> index: <index name>인덱싱된 필드의 값이 다른 문서의 해당 필드 값과 일치하는 문서를 삽입하면 삽입이 실패하고 다음 오류가 발생합니다.
E11000 duplicate key error collection: <collection> index: <index name>인덱싱된 필드의 새 값이 다른 문서의 해당 필드 값과 일치하도록 기존 문서를 업데이트하면 업데이트가 실패하고 다음 오류가 발생합니다.
E11000 duplicate key error collection: <collection> index: <index name>문서에서 인덱싱된 필드가 누락된 경우 값은 null로 처리됩니다. 인덱싱된 필드가 두 개(또는 그 이상의) 문서에서 누락된 경우 위에서 설명한 대로 인덱스 빌드, 삽입 및 업데이트가 실패합니다.