

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Índices compostos
<a name="indexes-compound"></a>

Os índices compostos armazenam informações de dois ou mais campos em uma coleção de documentos, permitindo consultas no primeiro campo ou em qualquer campo de prefixo. Esses índices otimizam o desempenho de consultas que filtram em vários campos simultaneamente ou combinam filtragem com operações de classificação. Eles também são eficazes para consultas de condição única nos campos indexados mais à esquerda. O banco de dados aproveita essas entradas de índice para localizar com eficiência os documentos correspondentes sem realizar digitalizações completas da coleção.

Os índices de campo composto são benéficos quando:
+ Você precisa filtrar em vários campos simultaneamente.
+ Você precisa combinar a filtragem com as operações de classificação.

## Propriedades de índice suportadas
<a name="indexes-compound-properties"></a>


| Opção | 3.6 | 4,0 | 5,0 | 8.0 | Cluster elástico | 
| --- | --- | --- | --- | --- | --- | 
| [name](index-property-name.md) | Sim | Sim | Sim | Sim | Sim | 
| [único](index-property-unique.md) | Sim | Sim | Sim | Sim | Sim | 
| [esparso \*](index-property-sparse.md) | Sim | Sim | Sim | Sim | Sim | 
| [parcial FilterExpression](index-property-partialfilterexpression.md) \* | Não | Não | Sim | Sim | Não | 

\* As `partialFilterExpression` opções `sparse` e não podem ser usadas juntas na mesma definição de índice. Se você tentar criar um índice com essas opções, ele falhará com o seguinte erro:

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

## Criação de um índice composto
<a name="indexes-compound-creating"></a>

Use o `createIndex()` método para criar um índice composto. A sintaxe do método é: `db.collection.createIndex(<keys>, <options>)`

O `keys` parâmetro é um documento JSON que especifica os campos e a ordem de classificação do índice:

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

Observe que somente um campo pode ser uma matriz em um índice composto. Se você tentar criar um índice composto em dois ou mais campos de matriz, ele falhará com o seguinte erro:

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

O `options` parâmetro é um documento JSON que especifica as opções para o índice:

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

Consulte [Propriedades do índice](index-properties.md) para ver exemplos de criação de índices compostos.