View a markdown version of this page

索引屬性:隱藏 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

索引屬性:隱藏

Amazon DocumentDB 支援從 Amazon DocumentDB 8.0.1 開始的hidden索引屬性。

查詢規劃器看不到隱藏的索引,也無法用於支援查詢。透過從規劃器隱藏索引,您可以評估捨棄索引的潛在影響,而不會實際捨棄索引。如果影響是負面的,您可以取消隱藏索引,而不必重新建立捨棄的索引。

所有索引類型都支援 hidden 屬性,包括單一欄位、複合、多索引鍵、文字、地理空間和向量索引。

Behavior (行為)

除了從規劃器中隱藏之外,也會完全維護和強制執行隱藏的索引。例如:

  • 如果隱藏的索引是唯一的索引,則索引仍會將其唯一的限制套用至文件。

  • 如果隱藏的索引是 TTL 索引,索引仍會過期文件。

  • 隱藏索引包含在 listIndexesdb.collection.getIndexes()結果中。

  • 隱藏的索引會在集合的寫入操作上更新,並繼續耗用磁碟空間和記憶體。因此,它們會包含在統計資料操作中,例如 db.collection.stats()$indexStats

  • 隱藏未隱藏的索引,或取消隱藏的索引, 會重設其 $indexStats。隱藏已隱藏的索引,或取消隱藏已隱藏的索引, 不會重設 $indexStats

限制

  • 您無法隱藏_id索引。

  • 您無法使用 cursor.hint()強制使用隱藏的索引。

  • $merge 如果on欄位上所需的唯一索引隱藏,則 會失敗。在執行 之前,讓索引可見$merge

範例

建立隱藏的索引

若要在隱藏狀態下建立索引,請使用 db.collection.createIndex()方法,並在索引定義true中將 hidden選項設定為 。

例如,下列操作會在 productId 欄位上建立隱藏的遞增索引:

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

若要驗證,請在集合listIndexes上執行 db.collection.getIndexes()或 。隱藏索引的定義"hidden": true中包含 。

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

只有當值為 時,hidden才會傳回索引選項true

隱藏現有的索引

使用 collMod命令來隱藏現有的索引。依其 name或依其 識別索引keyPattern,並hidden設為 true

下列範例會依名稱隱藏索引。

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

您也可以依索引的金鑰模式來識別索引。

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

取消隱藏現有索引

若要再次顯示隱藏的索引,請使用 collMod命令,並將 hidden設定為 false

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

由於索引會在隱藏時完全維護,因此索引會在取消隱藏時立即可供使用。