View a markdown version of this page

Indexeigenschaft: versteckt - 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.

Indexeigenschaft: versteckt

Amazon DocumentDB unterstützt die hidden Indexeigenschaft ab Amazon DocumentDB 8.0.1.

Versteckte Indizes sind für den Abfrageplaner nicht sichtbar und können nicht zur Unterstützung einer Abfrage verwendet werden. Indem Sie einen Index im Planer ausblenden, können Sie die möglichen Auswirkungen des Löschens des Indexes bewerten, ohne ihn tatsächlich zu löschen. Wenn die Auswirkung negativ ist, können Sie den Index wieder einblenden, anstatt einen gelöschten Index neu erstellen zu müssen.

Die hidden Eigenschaft wird für alle Indextypen unterstützt, einschließlich Einzelfeld-, Verbund-, Mehrschlüssel-, Text-, Geodaten- und Vektorindizes.

Behavior

Abgesehen davon, dass sie nicht im Planer angezeigt werden, werden versteckte Indizes vollständig verwaltet und durchgesetzt. Beispiel:

  • Wenn es sich bei einem ausgeblendeten Index um einen eindeutigen Index handelt, wendet der Index dennoch seine eindeutige Einschränkung auf Dokumente an.

  • Wenn es sich bei einem versteckten Index um einen TTL-Index handelt, läuft der Index dennoch für Dokumente ab.

  • Versteckte Indizes sind in listIndexes und db.collection.getIndexes() Ergebnissen enthalten.

  • Versteckte Indizes werden bei Schreibvorgängen in die Sammlung aktualisiert und verbrauchen weiterhin Speicherplatz und Arbeitsspeicher. Daher sind sie in Statistikoperationen wie db.collection.stats() und $indexStats enthalten.

  • Durch das Ausblenden eines nicht ausgeblendeten Indexes oder das Einblenden eines ausgeblendeten Indexes wird dessen Index zurückgesetzt. $indexStats Das Ausblenden eines bereits ausgeblendeten Indexes oder das Einblenden eines bereits ausgeblendeten Indexes wird nicht zurückgesetzt. $indexStats

Einschränkungen

  • Der _id Index kann nicht ausgeblendet werden.

  • Sie können ihn nicht verwendencursor.hint(), um die Verwendung eines versteckten Indexes zu erzwingen.

  • $mergeschlägt fehl, wenn der erforderliche eindeutige Index für die on Felder ausgeblendet ist. Machen Sie den Index sichtbar, bevor Sie ihn ausführen$merge.

Beispiele

Erstellen Sie einen versteckten Index

Um einen Index im versteckten Zustand zu erstellen, verwenden Sie die db.collection.createIndex() Methode und setzen Sie die hidden Option true in der Indexdefinition auf.

Mit dem folgenden Vorgang wird beispielsweise ein versteckter aufsteigender Index für das productId Feld erstellt:

db.collection.createIndex( { "productId": 1 }, { "name": "productId_1", "hidden": true } )

Führen Sie zur Überprüfung db.collection.getIndexes() oder für listIndexes die Sammlung aus. Ein versteckter Index umfasst "hidden": true in seiner Definition Folgendes:

db.collection.getIndexes() [ { "v": 4, "key": { "_id": 1 }, "name": "_id_" }, { "v": 4, "key": { "productId": 1 }, "name": "productId_1", "hidden": true } ]

Die Indexoption hidden wird nur zurückgegeben, wenn der Wert gleich isttrue.

Einen vorhandenen Index ausblenden

Verwenden Sie den collMod Befehl, um einen vorhandenen Index auszublenden. Identifizieren Sie den Index entweder anhand seines name oder anhand seineskeyPattern, und setzen Sie ihn hidden auftrue.

Im folgenden Beispiel wird ein Index nach Namen ausgeblendet.

db.runCommand({ collMod: "collection", index: { name: "productId_1", // Specify the index name hidden: true } })

Sie können den Index auch anhand seines Schlüsselmusters identifizieren.

db.runCommand({ collMod: "collection", index: { keyPattern: { productId: 1 }, // Specify the index key specification document hidden: true } })

Blenden Sie einen vorhandenen Index ein

Um einen versteckten Index wieder sichtbar zu machen, verwenden Sie den collMod Befehl mit hidden set tofalse.

db.runCommand({ collMod: "collection", index: { name: "productId_1", hidden: false } })

Da Indizes vollständig verwaltet werden, wenn sie ausgeblendet sind, kann der Index sofort verwendet werden, sobald sie ausgeblendet sind.