Crie um índice
Os índices suportam a execução eficiente de consultas no MongoDB. Se seu aplicativo estiver executando consultas repetidamente nos mesmos campos, poderá criar um índice nesses campos para melhorar o desempenho dessas consultas.
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.
Sobre esta tarefa
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.
Observação
Ordem de Classificação dos Índices
Usar um índice de campo único descendente pode impacto negativamente o desempenho do índice. Para obter o melhor desempenho, use somente índices de campo único ascendentes.
Procedimento
➤ 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 driver do 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>)
Exemplo
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
:
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"))
Resultados
Você pode utilizar o para monitorar a criação do seu mongosh
índice.
Para ver quais índices existem na sua collection, incluindo índices que estão sendo construídos no momento, execute o db.collection.getIndexes()
método:
db.collection.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { name: -1 }, name: 'name_-1' } ]
Para verificar se seu índice está sendo construído, use o estágio de agregação$currentOp
para retornar informações sobre operações ativas em seu banco de dados. Para executar$currentOp
emmongosh
, use o métododb.aggregate()
no banco de dados admin
.
O pipeline de agregação a seguir usa o estágio para retornar informações sobre uma operação ativa que cria um índice descendente $match
no name
campo :
db.getSiblingDB("admin").aggregate( [ { $currentOp : {} }, { $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') } }, ... ]
Para visualizar informações sobre índices existentes usando um driver, consulte a documentação do seu driver.
Saiba mais
Para saber como criar índices no MongoDB Compass, consulte Gerenciar índices na documentação do Compass.
Para ver com que frequência seus índices são usados, consulte Medir o uso do índice.
Para saber como especificar o nome do seu índice, consulte Especificar um nome de índice.
Para saber como o MongoDB cria índices, consulte Processo de construção de índice.