Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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, se debe usar el método del shell createIndex() o el método equivalente del driver. Esta página muestra ejemplos para 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.

Utilice para supervisar la creación de mongosh í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.