View a markdown version of this page

Index-Eigenschaft: einzigartig - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Index-Eigenschaft: einzigartig

Unterstützte Indextypen

Option 3.6 4,0 5.0 8.0 Elastischer Cluster
einzelnes Feld Ja Ja Ja Ja Ja
compound Ja Ja Ja Ja Ja
mehrere Schlüssel Ja Ja Ja Ja Ja

Verwenden Sie die Option Eindeutig, um die Eindeutigkeit der Felder in allen Dokumenten einer Sammlung sicherzustellen.

Beispiele

Die folgenden Beispiele zeigen, wie eindeutige Indizes für das folgende Beispieldokument erstellt werden:

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

einzelnes Feld

Erstellen Sie einen eindeutigen Einzelfeldindex für ProductID, um sicherzustellen, dass dieselbe ProductID nicht in mehr als einem Dokument existiert:

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

Zusammengesetzt

Erstellen Sie einen eindeutigen zusammengesetzten Index für Artikelnummer und Hersteller, um sicherzustellen, dass dieselbe Kombination aus SKU und Hersteller nicht in mehr als einem Dokument vorkommt:

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

mehrere Schlüssel

Erstellen Sie einen eindeutigen Index mit mehreren Schlüsseln für Barcodes, um sicherzustellen, dass ein Wert im Barcode-Array nicht in mehr als einem Dokument vorkommt:

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

Durch die Indizierung eines Arrays wird ein Indexeintrag für jedes Element des Arrays erstellt. Wenn ein Array beispielsweise 50 Elemente hat, hat es 50 Indexeinträge. Aus diesem Grund erzwingen eindeutige Indizes mit mehreren Schlüsseln die Eindeutigkeit aller einzelnen Elemente. Beispielsweise verletzen die folgenden Dokumente die Eindeutigkeitsbeschränkung für den Index des Werte-Array-Felds:

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

Beachten Sie das folgende Verhalten bei eindeutigen Indizes:

  1. Wenn Sie einen eindeutigen Index für vorhandene Daten erstellen, bei denen zwei (oder mehr) Dokumente dieselben Werte für die indizierten Felder haben, schlägt die Indexerstellung mit dem folgenden Fehler fehl: could not create unique index: <collection> index: <index name>

  2. Wenn Sie ein Dokument einfügen, bei dem der Wert des indizierten Felds dem Wert dieses Felds in einem anderen Dokument entspricht, schlägt das Einfügen fehl und es wird der folgende Fehler angezeigt: E11000 duplicate key error collection: <collection> index: <index name>

  3. Wenn Sie ein vorhandenes Dokument aktualisieren, sodass der neue Wert des indizierten Felds dem Wert dieses Felds in einem anderen Dokument entspricht, schlägt die Aktualisierung mit dem folgenden Fehler fehl: E11000 duplicate key error collection: <collection> index: <index name>

  4. Wenn das indizierte Feld in einem Dokument fehlt, wird der Wert als Null behandelt. Indexerstellungen, Einfügungen und Aktualisierungen schlagen wie oben beschrieben fehl, wenn das indizierte Feld in zwei (oder mehr) Dokumenten fehlt.