

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Propriété d'index : unique
<a name="index-property-unique"></a>

## Types d'index pris en charge
<a name="index-property-unique-supported"></a>


| Option | 3.6 | 4.0 | 5.0 | 8.0 | Cluster élastique | 
| --- | --- | --- | --- | --- | --- | 
| champ unique | Oui | Oui | Oui | Oui | Oui | 
| compound | Oui | Oui | Oui | Oui | Oui | 
| multiclé | Oui | Oui | Oui | Oui | Oui | 

Utilisez l'option unique pour garantir l'unicité des champs dans les documents d'une collection.

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

Les exemples suivants montrent comment créer des index uniques sur le document d'exemple suivant :

```
{
  "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')
}
```

champ unique

Créez un index de champ unique sur ProductID pour vous assurer que le même ID de produit n'existe pas dans plus d'un document :

```
db.collection.createIndex(
  {
    "productId": 1
  },
  {
    name: "productId_unique",
    unique: true
  }
)
```

Composé

Créez un index composé unique sur le SKU et le fabricant pour vous assurer que la même combinaison de SKU et de fabricant n'existe pas dans plus d'un document :

```
db.collection.createIndex(
  {
    "sku": 1,
    "manufacturer": 1
  },
  {
    name: "sku_and_manufacturer_unique",
    unique: true
  }
)
```

multiclé

Créez un index multiclé unique sur les codes-barres pour vous assurer qu'aucune valeur du tableau de codes-barres n'existe dans plus d'un document :

```
db.collection.createIndex(
  {
    "barcodes": 1
  },
  {
    name: "barcodes_unique",
    unique: true
  }
)
```

L'indexation d'un tableau crée une entrée d'index pour chaque élément du tableau. Par exemple, si un tableau comporte 50 éléments, il comporte 50 entrées d'index. De ce fait, des index multiclés uniques renforcent l'unicité de tous les éléments individuels. Par exemple, les documents suivants violeront la contrainte unique sur l'index des champs du tableau de valeurs :

```
{ "values": [ 1, 2, 3] }
{ "values": [ 3, 2 ] }   --> 3 and 2 already exist
{ "values": [ 1 ] }      --> 1 already exists
```

Notez le comportement suivant avec des index uniques :

1. Si vous créez un index unique sur des données existantes lorsque deux documents (ou plus) ont les mêmes valeurs pour les champs indexés, la création de l'index échouera avec l'erreur suivante : `could not create unique index: <collection> index: <index name>`

1. Si vous insérez un document dont la valeur du champ indexé correspond à la valeur de ce champ dans un autre document, l'insertion échouera avec l'erreur suivante : `E11000 duplicate key error collection: <collection> index: <index name>`

1. Si vous mettez à jour un document existant afin que la nouvelle valeur du champ indexé corresponde à la valeur de ce champ dans un autre document, la mise à jour échouera avec l'erreur suivante : `E11000 duplicate key error collection: <collection> index: <index name>`

1. Si le champ indexé est absent d'un document, la valeur sera traitée comme nulle. Les constructions, les insertions et les mises à jour d'index échoueront comme décrit ci-dessus si le champ indexé est absent de deux (ou plusieurs) documents.