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 sicherzustellen, dass die Felder in allen Dokumenten einer Sammlung eindeutig sind.

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 vorhanden ist:

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

Verbindung

Erstellen Sie einen eindeutigen zusammengesetzten Index für SKU 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 kein Wert im Barcode-Array in mehr als einem Dokument vorkommt:

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

Durch die Indizierung eines Arrays wird für jedes Element des Arrays ein Indexeintrag erstellt. Wenn ein Array beispielsweise 50 Elemente enthält, hat es 50 Indexeinträge. Aus diesem Grund erzwingen eindeutige Indizes mit mehreren Schlüsseln die Eindeutigkeit aller einzelnen Elemente. Die folgenden Dokumente verstoßen beispielsweise gegen die Eindeutigkeitsbeschränkung für den Feldindex des Wertearrays:

{ "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 bestehende Daten erstellen, in dem 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 mit dem Wert dieses Felds in einem anderen Dokument übereinstimmt, 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 so aktualisieren, dass der neue Wert des indizierten Felds mit dem Wert dieses Felds in einem anderen Dokument übereinstimmt, 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.