

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 인덱스 속성: 고유
<a name="index-property-unique"></a>

## 지원되는 인덱스 유형
<a name="index-property-unique-supported"></a>


| 옵션 | 3.6 | 4.0 | 5.0 | 8.0 | 탄력적 클러스터 | 
| --- | --- | --- | --- | --- | --- | 
| 단일 필드 | 예 | 예 | 예 | 예 | 예 | 
| compound | 예 | 예 | 예 | 예 | 예 | 
| 다중 키 | 예 | 예 | 예 | 예 | 예 | 

고유 옵션을 사용하여 컬렉션의 문서 간에 필드(들)의 고유성을 보장합니다.

## 예제
<a name="index-property-unique-examples"></a>

다음 예제에서는 다음 샘플 문서에서 고유한 인덱스를 생성하는 방법을 보여줍니다.

```
{
  "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
```

고유 인덱스가 있는 다음 동작에 유의하세요.

1. 두 개(또는 그 이상)의 문서가 인덱싱된 필드에 대해 동일한 값을 갖는 기존 데이터에 고유한 인덱스를 생성하면 인덱스 빌드가 실패하고 다음 오류가 발생합니다. `could not create unique index: <collection> index: <index name>` 

1. 인덱싱된 필드의 값이 다른 문서의 해당 필드 값과 일치하는 문서를 삽입하면 삽입이 실패하고 다음 오류가 발생합니다. `E11000 duplicate key error collection: <collection> index: <index name>` 

1. 인덱싱된 필드의 새 값이 다른 문서의 해당 필드 값과 일치하도록 기존 문서를 업데이트하면 업데이트가 실패하고 다음 오류가 발생합니다. `E11000 duplicate key error collection: <collection> index: <index name>` 

1. 문서에서 인덱싱된 필드가 누락된 경우 값은 null로 처리됩니다. 인덱싱된 필드가 두 개(또는 그 이상의) 문서에서 누락된 경우 위에서 설명한 대로 인덱스 빌드, 삽입 및 업데이트가 실패합니다.