Definición
Nuevo en la versión 7.0: (También disponible a partir de la versión 6.0.7)
Devuelve información sobre los existentes MongoDB Search índices en una colección o vista especificada.
Importante
Este comando solo se puede ejecutar en una implementación alojada en MongoDB Atlas.
Sintaxis
Sintaxis del comando:
db.<collection>.aggregate( [ { $listSearchIndexes: { id: <indexId>, name: <indexName> } } ] )
Campos de comandos
$listSearchIndexes toma cualquiera de los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Opcional | El id del índice sobre el que se desea obtener información. |
| string | Opcional | El nombre del índice sobre el que se devolverá información. |
No se pueden especificar tanto id como name. Si omites ambos campos, el id y el name, $listSearchIndexes devuelve información sobre todos los índices de MongoDB Search en la colección.
Control de acceso
Si tu implementación aplica control de acceso, el usuario que ejecute $listSearchIndexes debe tener el listSearchIndexes acción privilegiada sobre la base de datos o colección:
{ resource: { db : <database>, collection: <collection> }, actions: [ "listSearchIndexes" ] }
El rol integrado proporciona read el listSearchIndexes privilegio. El siguiente ejemplo otorga el read rol en la qa base de datos:
db.grantRolesToUser( "<user>", [ { role: "read", db: "qa" } ] )
Salida
$listSearchIndexes Devuelve una matriz de documentos. Cada documento de la matriz contiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Identificador único para el índice. |
| string | Nombre del índice. |
| string | Estado del índice. Para más información, consulta Estados de índices de MongoDB Search. |
| booleano | Indica si el índice está listo para ser consultado. |
| Documento | Describe la versión del índice. |
| entero | Número de versión asociado con la definición del índice. Cuando se actualiza una definición de índice, el número de versión se incrementa automáticamente. |
| fecha | Hora cuando se creó la definición actual del índice. |
| Documento | La definición más reciente del índice. Para más información, consulte Sintaxis de definición de índice de búsqueda. |
| arreglo de documentos | Contiene el estado del índice en cada host de búsqueda ( |
| string | Nombre de host del correspondiente |
| string | Estado del índice en el correspondiente |
| booleano | Indica si el índice está listo para ser consultado en el |
| Documento | Contiene información de estado sobre el índice activo en el correspondiente Para obtener más detalles, consulta Detalles del estado del índice. |
| Documento | Contiene información de estado sobre un índice que se está construyendo en segundo plano en el Para obtener más detalles, consulta Detalles del estado del índice. |
| string | Estado de los mapeos de sinónimos del índice. Este campo solo aparece si el índice tiene sinónimos definidos. Puede ser uno de los siguientes valores:
El estado devuelto es un resumen de los mapeos de sinónimos en cada |
| arreglo de documentos | Contiene el estado de los mapeos de sinónimos del índice en cada host de búsqueda ( |
| string | Estado de la asignación de sinónimos correspondiente en todos los procesos |
| booleano | Indica si la asignación de sinónimos correspondiente puede admitir query en todos los procesos |
| string | Describe un error para el mapeo de sinónimos, si corresponde. Solo aparece si el |
Detalles del estado del índice
La siguiente tabla describe los campos incrustados de los siguientes documentos: - statusDetail.[mongot].mainIndex - statusDetail.[mongot].stagedIndex
Los campos describen el estado del índice en un mongot específico.
Campo | Tipo | Descripción |
|---|---|---|
| string | El estado de la generación del índice en el |
| booleano | Indica si la generación del índice está lista para ser consultada en el |
| string | El estado de los mapeos de sinónimos de la generación de índices en el |
| Documento | Contiene el estado de los mapeos de sinónimos del índice en el correspondiente Para obtener más información, consulte Detalles de asignación de sinónimos. |
| Documento | Describe la versión de definición del índice con la que se está compilando esta generación de índices. |
| entero | Número de versión que la generación del índice está utilizando en el correspondiente |
| fecha | Hora en que se creó la definición del índice. |
| Documento | La definición con la que se está construyendo este índice. |
Detalles del mapeo de sinónimos
La siguiente tabla describe los campos embebidos de los siguientes objetos:
statusDetail.mainIndex.synonymMappingStatusDetails.<synonymMapping>statusDetail.stagedIndex.synonymMappingStatusDetails<synonymMapping>
Campo | Tipo | Descripción |
|---|---|---|
| string | Estado para la mapeo de sinónimos en el proceso correspondiente |
| booleano | Indica si la asignación de sinónimos puede admitir consultas en el proceso |
| string | Describe un error para el mapeo de sinónimos, si corresponde. Solo aparece si el |
Estados del índice de búsqueda de MongoDB
El campo status en la salida de $listSearchIndexes puede ser uno de los siguientes:
Estado | Descripción |
|---|---|
| Los siguientes escenarios pueden provocar que un índice esté en el estado
Cuando el índice está en el estado
Un índice en el estado |
| El índice no existe. Un índice en el estado |
| MongoDB está borrando el índice. Un índice en el estado |
| La creación de índices falló. Los índices pueden entrar en el estado Un índice en el estado |
| MongoDB aún no ha comenzado a construir el índice. Un índice en el estado |
| El índice está listo y puede soportar queries. Un índice en el estado |
| El índice es consultable pero ha dejado de replicar datos de la colección indexada. Las búsquedas en el índice pueden devolver datos desactualizados. Los índices pueden ingresar al estado Un índice en el estado |
Errors
Cambiado en la versión 7.1: este comando arroja un error cuando no se ejecuta en Atlas.
db.names.aggregate( [ { $listSearchIndexes: { } } ] )
MongoServerError: PlanExecutor error during aggregation :: caused by :: Search index commands are only supported with Atlas.
En versiones anteriores, este comando devuelve un resultado vacío cuando no se ejecuta en Atlas.
Ejemplos
Estos ejemplos demuestran cómo realizar las siguientes acciones:
Devolución de todos los índices de búsqueda
El siguiente ejemplo devuelve todos los índices de búsqueda de MongoDB en la colección movies:
db.movies.aggregate( [ { $listSearchIndexes: { } } ] )
Salida de muestra:
[ { id: '6524096020da840844a4c4a7', name: 'default', status: 'BUILDING', queryable: true, latestDefinitionVersion: { version: 2, createdAt: ISODate("2023-10-09T14:51:57.355Z") }, latestDefinition: { mappings: { dynamic: true }, storedSource: { include: [ 'awards.text' ] } }, statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } } } ] }, { id: '65240be420da840844a4d077', name: 'synonym_mappings', status: 'READY', queryable: true, latestDefinitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.305Z") }, latestDefinition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ], statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } } ] } ]
Devuelve un único índice de búsqueda por nombre
El siguiente ejemplo devuelve el índice llamado synonym-mappings en la colección movies:
db.movies.aggregate( [ { $listSearchIndexes: { name: "synonym-mappings" } } ] )
Salida de muestra:
[ { id: '65240be420da840844a4d077', name: 'synonym_mappings', status: 'READY', queryable: true, latestDefinitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.305Z") }, latestDefinition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ], statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'READY', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:19:16.000Z") }, definition: { mappings: { dynamic: true, fields: { fullplot: { type: 'string', indexOptions: 'offsets', store: true, norms: 'include' } } }, synonyms: [ { name: 'synonym_mapping', analyzer: 'lucene.english', source: { collection: 'synonyms' } } ] }, synonymMappingStatus: 'READY', synonymMappingStatusDetail: [ { synonym_mapping: { status: 'READY', queryable: true } } ] } } ] } ]
Devolver un índice de búsqueda único por id
El siguiente ejemplo devuelve el índice de búsqueda con el valor proporcionado de id:
db.movies.aggregate( [ { $listSearchIndexes: { id: "6524096020da840844a4c4a7" } } ] )
Salida de muestra:
[ { id: '6524096020da840844a4c4a7', name: 'default', status: 'BUILDING', queryable: true, latestDefinitionVersion: { version: 2, createdAt: ISODate("2023-10-09T14:51:57.355Z") }, latestDefinition: { mappings: { dynamic: true }, storedSource: { include: [ 'awards.text' ] } }, statusDetail: [ { hostname: 'atlas-n1cm1j-shard-00-02', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-01', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } }, stagedIndex: { status: 'PENDING', queryable: false, definitionVersion: { version: 1, createdAt: ISODate("2023-10-09T14:51:29.000Z") }, definition: { mappings: { dynamic: true, fields: {} }, storedSource: true } } }, { hostname: 'atlas-n1cm1j-shard-00-00', status: 'BUILDING', queryable: true, mainIndex: { status: 'READY', queryable: true, definitionVersion: { version: 0, createdAt: ISODate("2023-10-09T14:08:32.000Z") }, definition: { mappings: { dynamic: true, fields: {} } } } } ] } ]
Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $listSearchIndexes a una canalización de agregación, utilice el Operador $listSearchIndexes en un objeto de canalización.
Nota
El controlador Node.js proporciona un método auxiliar, listSearchIndexes(),que realiza la misma operación que la $listSearchIndexes etapa de canalización. Para obtener más información, consulte la página Índices en la documentación del controlador MongoDB Node.js.
Devolución de todos los índices de búsqueda
El siguiente ejemplo devuelve todos los índices de búsqueda de MongoDB Search en una colección:
const pipeline = [{ $listSearchIndexes: {} }]; const cursor = collection.aggregate(pipeline); return cursor;
Devuelve un único índice de búsqueda por nombre
El siguiente ejemplo devuelve el índice llamado synonym-mappings:
const pipeline = [{ $listSearchIndexes: { name: "synonym-mappings" } }]; const cursor = collection.aggregate(pipeline); return cursor;
Devolver un índice de búsqueda único por id
El siguiente ejemplo devuelve el índice de búsqueda con el valor proporcionado de id:
const pipeline = [{ $listSearchIndexes: { id: "6524096020da840844a4c4a7" } }]; const cursor = collection.aggregate(pipeline); return cursor;
Obtén más información
Para usar un método mongosh para ver los índices de búsqueda de MongoDB, consulta db.collection.getSearchIndexes().
Para crear MongoDB Search índices, consulta:
El método
db.collection.createSearchIndex()mongoshEl comando de base de datos
createSearchIndexes