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é de l'index : unique
Types d'index pris en charge
| Option | 3.6 | 4.0 | 5.0 | 8.0 | Cluster élastique |
|---|---|---|---|---|---|
| champ unique | Oui | Oui | Oui | Oui | Oui |
| compound | Oui | Oui | Oui | Oui | Oui |
| touches multiples | Oui | Oui | Oui | Oui | Oui |
Utilisez l'option unique pour garantir l'unicité du ou des champs dans les documents d'une collection.
Exemples
Les exemples suivants montrent comment créer des index uniques sur l'exemple de document 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 ProductID 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 pour le SKU et le fabricant afin de 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 } )
touches multiples
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 contient 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 :
Si vous créez un index unique sur des données existantes dans lequel 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>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>Si vous mettez à jour un document existant de sorte 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>Si le champ indexé est absent d'un document, la valeur sera traitée comme nulle. Les créations, les insertions et les mises à jour d'index échoueront comme décrit ci-dessus si le champ indexé est absent de deux documents (ou plus).