

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Propriété de l'index : masquée
<a name="index-property-hidden"></a>

Amazon DocumentDB prend en charge la propriété d'`hidden`index à partir d'Amazon DocumentDB 8.0.1.

Les index masqués ne sont pas visibles par le planificateur de requêtes et ne peuvent pas être utilisés pour prendre en charge une requête. En masquant un index dans le planificateur, vous pouvez évaluer l'impact potentiel d'une suppression de l'indice sans le supprimer réellement. Si l'impact est négatif, vous pouvez afficher l'index au lieu de devoir recréer un index supprimé.

La `hidden` propriété est prise en charge sur tous les types d'index, y compris les index à champ unique, composés, multiclés, textuels, géospatiaux et vectoriels.

## Comportement
<a name="index-property-hidden-behavior"></a>

En plus d'être masqués dans le planificateur, les index masqués sont entièrement gérés et appliqués. Par exemple :
+ Si un index masqué est un index unique, l'index applique toujours sa contrainte unique aux documents.
+ Si un index masqué est un index TTL, l'index fait toujours expirer les documents.
+ Les index masqués sont inclus dans `listIndexes` les `db.collection.getIndexes()` résultats.
+ Les index masqués sont mis à jour lors des opérations d'écriture dans la collection et continuent de consommer de l'espace disque et de la mémoire. Par conséquent, ils sont inclus dans les opérations statistiques telles que `db.collection.stats()` et`$indexStats`.
+ Le fait de masquer un index non masqué, ou d'afficher un index masqué, le réinitialise. `$indexStats` Le fait de masquer un index déjà masqué, ou d'afficher un index déjà non masqué, n'est pas réinitialisé. `$indexStats`

## Restrictions
<a name="index-property-hidden-restrictions"></a>
+ Vous ne pouvez pas masquer l'`_id`index.
+ Vous ne pouvez pas `cursor.hint()` forcer l'utilisation d'un index masqué.
+ `$merge`échoue si l'index unique requis sur les `on` champs est masqué. Rendez l'index visible avant de l'exécuter`$merge`.

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

### Création d'un index masqué
<a name="index-property-hidden-create"></a>

Pour créer un index à l'état masqué, utilisez la `db.collection.createIndex()` méthode et définissez l'`hidden`option sur `true` dans la définition de l'index.

Par exemple, l'opération suivante crée un index croissant masqué sur le `productId` champ :

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

Pour vérifier, exécutez `db.collection.getIndexes()` ou `listIndexes` sur la collection. Un index masqué est inclus `"hidden": true` dans sa définition.

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

L'option d'index n'`hidden`est renvoyée que si la valeur est`true`.

### Masquer un index existant
<a name="index-property-hidden-hide"></a>

Utilisez la `collMod` commande pour masquer un index existant. Identifiez l'index soit par son, `name` soit par son`keyPattern`, et définissez-le `hidden` sur`true`.

L'exemple suivant masque un index par son nom.

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

Vous pouvez également identifier l'indice par son modèle clé.

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

### Afficher un index existant
<a name="index-property-hidden-unhide"></a>

Pour rendre à nouveau visible un index masqué, utilisez la `collMod` commande avec `hidden` set to`false`.

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

Étant donné que les index sont entièrement conservés lorsqu'ils sont masqués, ils peuvent être utilisés immédiatement une fois qu'ils sont démasqués.