Definición
listCollectionsRecupera información, incluidos los nombres y las opciones de creación, para las colecciones y vistas en una base de datos.
El
listCollectionscomando devuelve un documento que contiene información que puede utilizar para crear un cursor en la colección.mongoshproporciona los métodos asistentedb.getCollectionInfos()ydb.getCollectionNames(), así como el comando mostrar colecciones.
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 el soporte de Atlas para 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. Una expresión de consulta para filtrar la lista de colecciones. Puede especificar una expresión de consulta en cualquiera de los campos devueltos |
| booleano | Opcional. Una bandera para indicar si el comando debe devolver solo el nombre y el tipo ( El valor por defecto es Cuando |
| booleano | Opcional. Una bandera, cuando se establece en Cuando tanto El valor por defecto es Para un usuario que tiene 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 de. Puede listCollections especificar 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 obtener más información sobre los bloqueos, consulte ¿Qué tipo de bloqueo utiliza MongoDB?.
Desconexión del cliente
Si el cliente que emitió listCollections se desconecta antes de que la operación se complete, MongoDB marca listCollections para su terminación usando killOp.
Restricción del estado del set de réplicas
Para que se ejecuten en un nodo del set de réplicas, las operaciones listCollections requieren que el nodo esté en estado PRIMARY o SECONDARY. Si el nodo se encuentra en otro estado, como STARTUP2, la operación falla.
Acceso requerido
El listCollections comando requiere la acción cuando se aplica listCollections el control de acceso. Los usuarios deben tener privilegios que otorguen la listCollections acción en la base de datos para listCollections ejecutar.
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 información para crear un cursor para documentos que contienen nombres y opciones de colección. La información del cursor incluye su ID, el espacio de nombres completo del comando y el primer lote de resultados. Cada documento de la salida por lotes contiene los siguientes campos:
CampoTipoDescripciónNombre
String
Nombre de la colección.
tipo
String
Tipo de almacenamiento de datos. Devuelve
collectionpara las colecciones,viewpara vistas ytimeseriespara la colección de series de tiempo.opciones
Documento
Opciones de colección.
Estas opciones corresponden directamente a las opciones disponibles en
db.createCollection(). Para las 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 particionado.
idIndex
Documento
Proporciona información sobre el índice
_idde la colección.
Ejemplo
Enumera todas las colecciones
La base de datos music contiene tres colecciones: motorhead, taylorSwift y ramones.
Para obtener una lista de nombres de colecciones, ejecute el comando listCollections con la opción nameOnly.
db.runCommand( { listCollections: 1.0, nameOnly: true } )
La salida es:
{ cursor: { id: Long("0"), ns: 'music.$cmd.listCollections', firstBatch: [ { name: 'motorhead', type: 'collection' }, { name: 'taylorSwift', type: 'collection' }, { name: 'ramones', type: 'collection' } ] }, ok: 1 }
Para obtener información más detallada, remueve la opción nameOnly.
db.runCommand( { listCollections: 1.0 } )
La salida es:
{ cursor: { id: Long("0"), ns: 'music.$cmd.listCollections', firstBatch: [ { name: 'motorhead', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("09ef1858-2831-47d2-a3a7-9a29a9cfeb94") }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'taylorSwift', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("6c46c8b9-4999-4213-bcef-9a36b0cff228") }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'ramones', type: 'collection', options: {}, info: { readOnly: false, uuid: new UUID("7e1925ba-f2f9-4e42-90e4-8cafd434a6c4") }, 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: