Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

Crie um índice

Se seu aplicativo executar queries repetidamente nos mesmos campos, crie um índice nesses campos para melhorar o desempenho.

Para criar um índice, use o método shell createIndex() ou método equivalente para seu driver. Esta página mostra exemplos para o MongoDB Shell e drivers.

Ao executar um comando de criação de índice no MongoDB Shell ou em um driver, o MongoDB só cria o índice se não existir um índice com a mesma especificação.

Embora os índices melhorem o desempenho da consulta, adicionar um índice tem impacto negativo no desempenho para operações de gravação. Para coleções com alta taxa de gravação para leitura, os índices são caros porque cada inserção e atualização também devem atualizar quaisquer índices.

Aviso

Não crie índices em campos criptografados. A criação de índices em campos criptografados que usam a Queryable Encryption afeta negativamente o desempenho. Em vez disso, você pode criar um índice no campo __safeContent__ para suportar queries em campos criptografados.


➤ Para definir a linguagem dos exemplos nesta página, use o menu suspenso Selecione a linguagem no painel de navegação à direita.


Para criar um índice em mongosh, use db.collection.createIndex().

db.collection.createIndex( <key and index type specification>, <options> )

Para criar um índice usando o driver .NET, use MongoCollection.CreateIndex.

collection.CreateIndex( IndexKeys<collection>.<key and index type specification>, <options> );

Para criar um índice usando o driver Java Async, use com.mongodb.async.client.MongoCollection.createIndex.

collection.createIndex( <key and index type specification>, <options>, <callbackFunction>)

Para criar um índice usando o driver Java, use com.mongodb.client.MongoCollection.createIndex.

collection.createIndex(<key and index type specification>, <options>)

Para criar um índice usando o Kotlin Coroutine Driver, use o MongoCollection.createIndex() método.

collection.createIndex(<key and index type specification>, <options>)

Para criar um índice usando o driver Motor, use motor.motor_asyncio.AsyncIOMotorCollection.create_index.

await db.collection.create_index([(<key and index type specification>)], <options> )

Para criar um índice usando o driver Node.JS, use createIndex().

collection.createIndex( { <key and index type specification> }, function(err, result) {
console.log(result);
callback(result);
} )

Para criar um índice usando o driver Perl, use create_one().

my $indexes = $db->get_collection( <collection> )->indexes;
$indexes->create_one( [ <key and index type specification> ] );

Para criar um índice usando o driver PHP, use MongoDB\\Collection::createIndex().

$collection->createIndex(<key and index type specification>, <options>);

Para criar um índice usando o driver Python, use o método pymongo.collection.Collection.create_index :

db.collection.create_index([(<key and index type specification>)], <options> )

Para criar um índice usando o driver Ruby, use Mongo::Index::View#create_one.

client[:collection].indexes.create_one({ <key and index type specification> }, {options})

Para criar um índice usando o driver Scala,useorg.mongodb.scala.model.Indexes.

collection.createIndex(<key and index type specification>)

Este exemplo cria um índice ascendente de chave única no campo name:

db.collection.createIndex( { name: 1 } )

Este exemplo cria um índice ascendente de chave única no campo name:

collection.CreateIndex( IndexKeys<collection>.Ascending("name") );

Este exemplo cria um índice ascendente de chave única no campo name:

collection.createIndex(Indexes.ascending("name"), someCallbackFunction());

Este exemplo cria um índice ascendente de chave única no campo name:

collection.createIndex(Indexes.ascending("name"));

Este exemplo cria um índice ascendente de chave única no campo name:

collection.createIndex(Indexes.descending("name"))

Este exemplo cria um índice ascendente de chave única no campo name:

await collection.create_index([("name", pymongo.ASCENDING)])

Este exemplo cria um índice ascendente de chave única no campo name:

collection.createIndex( { name : 1 }, function(err, result) {
console.log(result);
callback(result);
} )

Este exemplo cria um índice ascendente de chave única no campo name:

my $indexes = $db->get_collection( <collection> )->indexes;
$indexes->create_one( [ name => 1 ] );

Este exemplo cria um índice ascendente de chave única no campo name:

$collection->createIndex(['name' => 1]);

Este exemplo cria um índice ascendente de chave única no campo name:

collection.create_index([("name", pymongo.ASCENDING)])

Este exemplo cria um índice ascendente de chave única no campo name:

client[:collection].indexes.create_one({ name: 1 })

Este exemplo cria um índice ascendente de chave única no campo name:

collection.createIndex(ascending("name"))

Utilize o mongosh para monitorar a criação do índice.

Para ver quais índices existem na sua coleção, incluindo os que estão sendo criados atualmente, execute o método db.collection.getIndexes():

db.collection.getIndexes()
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { name: -1 }, name: 'name_-1' }
]

Para verificar se o seu índice está construindo, utilize o $currentOp com db.aggregate() no banco de dados do admin.

O seguinte pipeline de agregação utiliza o estágio $match para mostrar uma operação ativa construindo um índice descendente no campo name:

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { idleConnections: true } },
{ $match : {"command.createIndexes": { $exists: true } } }
] )
[
{
type: 'op',
host: 'mongodb.example.net:27017',
desc: 'conn584',
connectionId: 584,
client: '104.30.134.189:12077',
appName: 'mongosh 2.3.4',
clientMetadata: {
...
},
active: true,
currentOpTime: '2024-12-05T16:13:35.571+00:00',
effectiveUsers: [ { user: jane-doe, db: 'admin' } ],
isFromUserConnection: true,
threaded: true,
opid: ...,
lsid: {
...
},
secs_running: Long('3'),
microsecs_running: Long('3920881'),
op: 'command',
ns: 'example_db.collection',
redacted: false,
command: {
createIndexes: 'collection',
indexes: [ { name: 'name_-1', key: { name: -1 } } ],
apiVersion: '1',
lsid: { id: UUID('570931be-c692-4963-b9e2-1e279efd9702') },
'$clusterTime': {
clusterTime: Timestamp({ t: 1733415063, i: 32 }),
signature: {
hash: Binary.createFromBase64('z0zaUHJ5SfhNQyvQLhocsKRFNbo=', 0),
keyId: Long('7444956895695077380')
}
},
'$db': 'example_db'
},
numYields: 0,
queues: {
...
},
currentQueue: null,
locks: {},
waitingForLock: false,
lockStats: { ... },
waitingForFlowControl: false,
flowControlStats: { acquireCount: Long('3') }
}, ...
]

O MongoDB marca as construções de índice em várias etapas, incluindo a espera pelo quórum para a confirmação, como uma conexão inativa, definindo o campo active para false. A configuração idleConnections: true inclui essas conexões ociosas na saída $currentOp.

Para visualizar informações sobre índices existentes usando um driver, consulte a documentação do seu driver.

Voltar

Indexes

Nesta página