

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à.

# Indici composti
<a name="indexes-compound"></a>

Gli indici composti memorizzano le informazioni di due o più campi in una raccolta di documenti, permettendo interrogazioni sul primo campo o su qualsiasi campo del prefisso. Questi indici ottimizzano le prestazioni per le query che filtrano su più campi contemporaneamente o combinano il filtraggio con operazioni di ordinamento. Sono efficaci anche per le interrogazioni a condizione singola sui campi indicizzati più a sinistra. Il database sfrutta queste voci di indice per individuare in modo efficiente i documenti corrispondenti senza eseguire scansioni complete della raccolta.

Gli indici di campo composti sono utili quando:
+ È necessario filtrare su più campi contemporaneamente.
+ È necessario combinare il filtraggio con le operazioni di ordinamento.

## Proprietà dell'indice supportate
<a name="indexes-compound-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 | 

\* 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 composto
<a name="indexes-compound-creating"></a>

Utilizzate il `createIndex()` metodo per creare un indice composto. La sintassi del metodo è: `db.collection.createIndex(<keys>, <options>)`

Il `keys` parametro è un documento JSON che specifica i campi e l'ordinamento dell'indice:

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

Nota che solo un campo può essere una matrice in un indice composto. Se si tenta di creare un indice composto su due o più campi di matrice, l'operazione avrà esito negativo e verrà visualizzato il seguente errore:

```
multiple fields of compound index cannot be arrays
```

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

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

Vedi [Index Properties](index-properties.md) per esempi di creazione di indici composti.