As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Propriedade do índice: única
Tipos de índice compatíveis
| Opção | 3.6 | 4,0 | 5,0 | 8.0 | Cluster elástico |
|---|---|---|---|---|---|
| campo único | Sim | Sim | Sim | Sim | Sim |
| compound | Sim | Sim | Sim | Sim | Sim |
| chave múltipla | Sim | Sim | Sim | Sim | Sim |
Use a opção exclusiva para garantir a exclusividade dos campos nos documentos de uma coleção.
Exemplos
Os exemplos a seguir mostram como criar índices exclusivos no seguinte documento de amostra:
{ "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') }
campo único
Crie um índice de campo único exclusivo no ProductID para garantir que o mesmo ProductID não exista em mais de um documento:
db.collection.createIndex( { "productId": 1 }, { name: "productId_unique", unique: true } )
Composto
Crie um índice composto exclusivo sobre SKU e fabricante para garantir que a mesma combinação de SKU e fabricante não exista em mais de um documento:
db.collection.createIndex( { "sku": 1, "manufacturer": 1 }, { name: "sku_and_manufacturer_unique", unique: true } )
chave múltipla
Crie um índice exclusivo de várias chaves em códigos de barras para garantir que nenhum valor na matriz de códigos de barras não exista em mais de um documento:
db.collection.createIndex( { "barcodes": 1 }, { name: "barcodes_unique", unique: true } )
A indexação de uma matriz cria uma entrada de índice para cada elemento da matriz. Por exemplo, se uma matriz tiver 50 itens, ela terá 50 entradas de índice. Por esse motivo, índices exclusivos de várias chaves reforçam a exclusividade em todos os itens individuais. Por exemplo, os documentos a seguir violarão a restrição exclusiva no índice do campo da matriz de valores:
{ "values": [ 1, 2, 3] } { "values": [ 3, 2 ] } --> 3 and 2 already exist { "values": [ 1 ] } --> 1 already exists
Observe o seguinte comportamento com índices exclusivos:
Se você criar um índice exclusivo em dados existentes em que dois (ou mais) documentos tenham os mesmos valores para os campos indexados, a criação do índice falhará com o seguinte erro:
could not create unique index: <collection> index: <index name>Se você inserir um documento em que o valor do campo indexado corresponda ao valor desse campo em outro documento, a inserção falhará com o seguinte erro:
E11000 duplicate key error collection: <collection> index: <index name>Se você atualizar um documento existente para que o novo valor do campo indexado corresponda ao valor desse campo em outro documento, a atualização falhará com o seguinte erro:
E11000 duplicate key error collection: <collection> index: <index name>Se o campo indexado estiver ausente de um documento, o valor será tratado como nulo. As compilações, inserções e atualizações de índices falharão conforme descrito acima se o campo indexado estiver ausente em dois (ou mais) documentos.