Definición
listCollectionsRecupere información, incluidos los nombres y las opciones de creación, para las colecciones y vistas en una base de datos.
El comando
listCollectionsdevuelve una lista sin ordenar de todas las colección y vistas en la base de datos. Utilice el documento devuelto para crear un cursor en la colección.mongoshproporciona los métodos auxiliaresdb.getCollectionInfos()y, así comodb.getCollectionNames()el comando show collections.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre la compatibilidad de Atlas con todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any> } )
Campos de comandos
El comando puede aceptar los siguientes campos opcionales:
Campo | Tipo | Descripción |
|---|---|---|
| Documento | Opcional. Un predicado de query para filtrar la lista de colecciones. Puede especificar un predicado de consulta en cualquiera de los campos devueltos |
| booleano | Opcional. Una bandera para indicar si el comando devuelve solo el nombre y el tipo ( El valor por defecto es Cuando |
| booleano | opcional. Una bandera que, cuando se establece en Cuando las opciones El valor por defecto es Para los usuarios que tienen la acción Cuando se utiliza sin |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). Cualquier comentario establecido en un comando |
Comportamiento
filtro
Utilice un filtro para limitar los resultados listCollections de. Especifique un filter en cualquiera de los campos devueltos en el listCollections conjunto de resultados.
Bloqueos
listCollections comportamiento de bloqueo:
Antes de MongoDB 5.0,
listCollectionstoma un bloqueo de intención compartida en cada colección de la base de datos cuandolistCollectionsmantiene un bloqueo de intención compartida en la base de datos.A partir de MongoDB 5.0,
listCollectionsno toma un bloqueo de intención compartida en una colección o base de datos.listCollectionsno se bloquea por operaciones que mantienen un bloqueo de escritura sobre una colección.
Para aprender sobre los bloqueos, consulte FAQ: Concurrencia.
Desconexión del cliente
Si el cliente que emitiólistCollectionsse desconecta antes de que la operación finalice, MongoDB marcalistCollectionspara su terminación usandokillOp.
Restricción del estado del set de réplicas
Para ejecutarse en un miembro del conjunto de réplicas, listCollections las operaciones requieren que PRIMARY SECONDARY el miembro esté en estado o. Si el miembro está en otro estado,STARTUP2 como, la operación genera un error.
Acceso requerido
El comandolistCollectionsy su contenedordb.getCollectionInfos()requieren la acciónlistCollectionscuando se aplica el control de acceso. Los usuarios deben tener privilegios que otorguen la acción listCollections en la base de datos para ejecutar listCollections.
Por ejemplo, el siguiente comando otorga el privilegio de ejecutar db.getCollectionInfos() en la base de datos test:
{ resource: { db: "test", collection: "" }, actions: [ "listCollections" ] }
El rol con funcionalidad incorporada read proporciona el privilegio de ejecutar listCollections para una base de datos específica.
Los usuarios sin el privilegio read necesario pueden ejecutar listCollections cuando authorizedCollections y nameOnly están configurados en true. En este caso, el comando devuelve los nombres y tipos de las colecciones donde el usuario tiene privilegios.
Por ejemplo, considere a un usuario con un rol que concede el siguiente privilegio find:
{ resource: { db: "sales", collection: "currentQuarter" }, actions: [ "find" ] }
El usuario puede ejecutar listCollections si authorizedCollections y nameOnly están configurados en true.
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
La operación devuelve el nombre y el tipo de la colección currentQuarter.
Sin embargo, las siguientes operaciones devuelven un error si el usuario no tiene la autorización de acceso requerida:
db.runCommand( { listCollections: 1.0, authorizedCollections: true } ) db.runCommand( { listCollections: 1.0, nameOnly: true } )
Salida
listCollections.cursorUn documento que contiene la información necesaria para crear un cursor a documentos que contienen nombres de colecciones y opciones. La información del cursor incluye el cursor id, el grupo completo para el comando y el primer agrupar de resultados. Cada documento en la salida por grupos contiene los siguientes campos:
CampoTipoDescripciónNombre
String
Nombre de la colección.
tipo
String
Tipo de almacén de datos. Devuelve
collectionpara colecciones,viewpara vistas ytimeseriespara colecciones de series temporales.opciones
Documento
Opciones de colección.
Estas opciones corresponden a las opciones disponibles en
db.createCollection(). Para obtener descripciones de las opciones, consultedb.createCollection().información
Documento
Enumere los siguientes campos relacionados con la colección:
- Solo lectura
boolean. Sitrue, el almacén de datos es de solo lectura.- uuid
- UUID. Una vez establecido, el UUID de la colección no cambia. El UUID de la colección permanece igual entre los nodos del set de réplicas y las particiones en un clúster.
idIndex
Documento
Proporciona información sobre el índice
_idde la colección.
Si no requiere una respuesta de comando sin procesar, utiliza el db.getCollectionInfos() o los métodos del asistente db.getCollectionNames().
Ejemplo
Enumera todas las colecciones
La base de datos sample_mflix contiene colecciones como movies, theaters, users y otras.
Para obtener una lista de nombres de colecciones, ejecute el comando listCollections con la opción nameOnly.
db.runCommand( { listCollections: 1.0, nameOnly: true } )
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection' }, { name: 'theaters', type: 'collection' }, { name: 'users', type: 'collection' }, { name: 'embedded_movies', type: 'collection' }, { name: 'sessions', type: 'collection' }, { name: 'comments', type: 'collection' }, { name: 'system.views', type: 'collection' } ] }, ok: 1 }
Para obtener información más detallada, remueve la opción nameOnly.
db.runCommand( { listCollections: 1.0 } )
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'theaters', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'users', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'embedded_movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'sessions', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'comments', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'system.views', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } } ] }, ok: 1 }
Obtén más información
Para las opciones de colección:
Para obtener información sobre la colección: