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

Crear un índice

Si tu aplicación ejecuta consultas repetidas en los mismos campos, crea un índice en esos campos para mejorar el rendimiento.

Para crear un índice, utilice el createIndex() método shell o método equivalente para tu driver. En esta página se muestran ejemplos para la MongoDB Shell y los drivers.

Cuando ejecute un comando de creación de índice en el Shell de MongoDB o en un driver, MongoDB solo crea el índice si no existe uno con la misma especificación.

Aunque los índices mejoran el rendimiento de las queries, agregar un índice tiene un impacto negativo en el rendimiento de las operaciones de guardado. Para colecciones con una alta proporción de escritura-lectura, los índices son costosos porque cada inserción y actualización también deben actualizar cualquier índice.

Advertencia

No cree índices en campos cifrados. La creación de índices en campos cifrados que utilizan Queryable Encryption afecta negativamente el rendimiento. En su lugar, puedes crear un índice en el campo __safeContent__ para admitir consultas en campos cifrados.


➤ Para establecer el lenguaje de los ejemplos en esta página, utilice el menú desplegable Seleccione su lenguaje en el panel de navegación derecho.


Para crear un índice en mongosh, usar db.collection.createIndex().

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

Para crear un índice usando el controlador .NET, usar MongoCollection.CreateIndex.

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

Para crear un índice mediante el driver de Java asíncrono, utilice com.mongodb.async.client.MongoCollection.createIndex.

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

Para crear un índice mediante el driver de Java, utilice com.mongodb.client.MongoCollection.createIndex.

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

Para crear un índice mediante el driver corrutina de Kotlin, utilice el método MongoCollection.createIndex() .

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

Para crear un índice mediante el driver de Motor, utilice motor.motor_asyncio.AsyncIOMotorCollection.create_index.

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

Para crear un índice con el Node.js Driver, usa createIndex().

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

Para crear un índice mediante el driver de Perl, utilice create_one().

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

Para crear un índice usando el driver PHP, usa MongoDB\\Collection::createIndex().

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

Para crear un índice con el driver de Python, utilice el método pymongo.collection.Colección.create_index :

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

Para crear un índice mediante el driver de Ruby, utilice Mongo::Index::View#create_one.

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

Para crear un índice usando el Scala driver, utilice org.mongodb.scala.model.Indexes.

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

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

Este ejemplo crea un índice ascendente de clave única en el campo name:

collection.createIndex(ascending("name"))

Utiliza mongosh para supervisar la creación de índices.

Para ver qué índices existen en su colección, incluidos los índices que se están compilando actualmente, ejecute el método db.collection.getIndexes():

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

Para comprobar si su índice se está construyendo, utilice $currentOp con db.aggregate() en la base de datos admin.

La siguiente pipeline de agregación utiliza la etapa $match para mostrar una operación activa construyendo un índice descendente en el 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') }
}, ...
]

MongoDB marca las creaciones de índices en varias etapas, incluida la espera del quórum de confirmación, como una conexión inactiva al establecer el campo active en false. La configuración idleConnections: true incluye estas conexiones inactivas en la salida $currentOp.

Para ver información sobre los índices existentes mediante un driver, consulte la documentación de su driver.

Volver

Indexes

En esta página