

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Multi-key Indici
<a name="indexes-multikey"></a>

Per i campi che hanno un valore di matrice, un indice a più chiavi consente di creare una chiave di indice per ogni elemento dell'array. L'indicizzazione di un array crea una voce di indice per ogni elemento dell'array.

Multi-key gli indici sono utili quando l'applicazione interroga o filtra frequentemente i documenti in base ai valori degli array.

## Proprietà degli indici supportate
<a name="indexes-multikey-properties"></a>


| Opzione | 3.6 | 4.0 | 5.0 | 8.0 | Cluster elastico | 
| --- | --- | --- | --- | --- | --- | 
| [name](index-property-name.md) | Sì  | Sì | Sì | Sì | Sì | 
| [unico](index-property-unique.md) | Sì  | Sì | Sì | Sì | Sì | 
| [sparso \*](index-property-sparse.md) | Sì  | Sì | Sì | Sì | Sì | 
| [parziale\* FilterExpression](index-property-partialfilterexpression.md) | No | No | Sì | Sì | No | 
| [scadere AfterSeconds](index-property-expireafterseconds.md) | Sì  | Sì | Sì | Sì | Sì | 

\* Le `partialFilterExpression` opzioni `sparse` and non possono essere utilizzate insieme nella stessa definizione di indice. Se si tenta di creare un indice con queste opzioni, l'operazione avrà esito negativo e verrà visualizzato il seguente errore:

```
Error in specification: cannot mix partialFilterExpression and sparse options
```

## Creazione di un indice a più chiavi
<a name="indexes-multikey-creating"></a>

Utilizzate il `createIndex()` metodo per creare un indice a più chiavi. La sintassi del metodo è: `db.collection.createIndex(<key>, <options>)`

Il `key` parametro è un documento JSON che specifica il campo e l'ordinamento dell'indice:

```
{
  "<field>": <1 (ascending)|-1 (descending)>
}
```

Il `options` parametro è un documento JSON che specifica le opzioni per l'indice:

```
{
  "name": "<name>",
  "unique": <true | false>,
  "sparse": <true | false>,
  "partialFilterExpression": <filter expression>,
  "expireAfterSeconds": <seconds before expiry>
}
```

L'esempio seguente crea un indice a più chiavi sul `categories` campo, ordinato in ordine crescente con il nome: `book_categories`

```
db.collection.createIndex(
  {
    "categories": 1
  },
  {
    "name": "book_categories"
  }
)
```

Vedi [Index Properties](index-properties.md) per esempi di creazione di indici a più chiavi.