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
listIndexesunddb.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$indexStatsenthalten.Durch das Ausblenden eines nicht ausgeblendeten Indexes oder das Einblenden eines ausgeblendeten Indexes wird dessen Index zurückgesetzt.
$indexStatsDas Ausblenden eines bereits ausgeblendeten Indexes oder das Einblenden eines bereits ausgeblendeten Indexes wird nicht zurückgesetzt.$indexStats
Einschränkungen
Der
_idIndex kann nicht ausgeblendet werden.Sie können ihn nicht verwenden
cursor.hint(), um die Verwendung eines versteckten Indexes zu erzwingen.$mergeschlägt fehl, wenn der erforderliche eindeutige Index für dieonFelder 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.