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 auxiliaresdb.getCollectionInfos()db.getCollectionNames()y.
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:
{ 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.). |
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
A partir de MongoDB 4.2, si el cliente que emitiólistCollectionsse desconecta antes de que se complete la operación, MongoDB marcalistCollectionspara la finalización mediantekillOp.
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 } )
show collections
El método mongosh show collections es similar a:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Para los usuarios con el acceso requerido,
show collectionsenumera las colecciones que no son del sistema para la base de datos.Para los usuarios sin el acceso requerido,
show collectionsenumera solo las colecciones para las que el usuario tiene privilegios.
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.
Nuevo en la versión 3.6.
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 enumerar las colecciones en la base de datos, puede utilizar el comando mongosh incorporado, show collections.
show collections
La salida es:
motorhead ramones taylorSwift
Para obtener una lista similar con el comando de colecciones listCollections, utilice 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: