

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

# 索引屬性：隱藏
<a name="index-property-hidden"></a>

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

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

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

## Behavior (行為)
<a name="index-property-hidden-behavior"></a>

除了從規劃器中隱藏之外，隱藏的索引也會完全維護和強制執行。例如：
+ 如果隱藏的索引是唯一的索引，則索引仍會將其唯一的限制套用至文件。
+ 如果隱藏的索引是 TTL 索引，索引仍會過期文件。
+ 隱藏的索引會包含在 `listIndexes`和 `db.collection.getIndexes()`結果中。
+ 隱藏的索引會在集合的寫入操作上更新，並繼續耗用磁碟空間和記憶體。因此，它們會包含在統計資料操作中，例如 `db.collection.stats()`和 `$indexStats`。
+ 隱藏未隱藏的索引，或取消隱藏的索引， 會重設其 `$indexStats`。隱藏已隱藏的索引，或取消隱藏已隱藏的索引， 不會重設 `$indexStats`。

## 限制
<a name="index-property-hidden-restrictions"></a>
+ 您無法隱藏`_id`索引。
+ 您無法使用 `cursor.hint()`強制使用隱藏的索引。
+ `$merge` 如果`on`欄位上所需的唯一索引隱藏，則 會失敗。在執行 之前，讓索引可見`$merge`。

## 範例
<a name="index-property-hidden-examples"></a>

### 建立隱藏的索引
<a name="index-property-hidden-create"></a>

若要在隱藏狀態下建立索引，請使用 `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`。

### 隱藏現有的索引
<a name="index-property-hidden-hide"></a>

使用 `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
  }
})
```

### 取消隱藏現有索引
<a name="index-property-hidden-unhide"></a>

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

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

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