Docs Menu
Docs Home
/ /
Administración

listCollections (comando de base de datos)

listCollections

Recupera información, incluidos los nombres y las opciones de creación, para las colecciones y vistas en una base de datos.

El listCollections comando devuelve un documento que contiene información que puede utilizar para crear un cursor en la colección.

mongosh proporciona los métodos asistente db.getCollectionInfos() y db.getCollectionNames(), así como el comando mostrar colecciones.

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.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
listCollections: 1,
filter: <document>,
nameOnly: <boolean>,
authorizedCollections: <boolean>,
comment: <any>
}
)

El comando puede aceptar los siguientes campos opcionales:

Campo
Tipo
Descripción

filter

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 listCollectionspor.

nameOnly

booleano

Opcional. Una bandera para indicar si el comando debe devolver solo el nombre y el tipo (view, collection o timeseries) o devolver tanto el nombre como otra información.

El valor por defecto es false.

Cuando nameOnly es true, su expresión filter solo puede filtrar basándose en el nombre y el tipo de una colección. No hay otros campos disponibles.

authorizedCollections

booleano

Opcional. Una bandera, cuando se establece en true y se usa con nameOnly: true, que permite a un usuario sin el privilegio requerido (es decir, listCollections acción en la base de datos) para ejecutar el comando cuando se aplica el control de acceso.

Cuando tanto authorizedCollections como nameOnly se establecen en verdadero, el comando devuelve solo aquellas colecciones para las que el usuario tiene privilegios. Por ejemplo, si un usuario tiene la acción find en colecciones específicas, el comando devuelve solo esas colecciones; o, si un usuario tiene la acción find o cualquier otra acción en el recurso de la base de datos, el comando enumera todas las colecciones de la base de datos.

El valor por defecto es false. Es decir, el usuario debe tener la acción listCollections sobre la base de datos para ejecutar el comando.

Para un usuario que tiene la acción listCollections en la base de datos, esta opción no tiene efecto ya que el usuario tiene privilegios para enumerar las colecciones en la base de datos.

Cuando se utiliza sin nameOnly: true, esta opción no tiene efecto. Es decir, el usuario debe tener los privilegios necesarios para ejecutar el comando cuando se aplica el control de acceso. De lo contrario, el usuario no está autorizado para ejecutar el comando.

comment

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 listCollections es heredado por cualquier comando getMore posterior que se ejecute en el cursor listCollections.

Utilice un filtro para limitar los resultados de. Puede listCollections especificar filter en cualquiera de los campos devueltos en el listCollections conjunto de resultados.

listCollections comportamiento de bloqueo:

  • Antes de MongoDB 5.0, listCollections toma un bloqueo de intención compartida en cada colección de la base de datos cuando listCollections mantiene un bloqueo de intención compartida en la base de datos.

  • A partir de MongoDB 5.0, listCollections no toma un bloqueo de intención compartida en una colección o base de datos. listCollections no 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?.

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.

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.

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
}
)
listCollections.cursor

Un 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:

Campo
Tipo
Descripción

Nombre

String

Nombre de la colección.

tipo

String

Tipo de almacenamiento de datos. Devuelve collection para las colecciones, view para vistas y timeseries para 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, consulte db.createCollection().

información

Documento

Enumere los siguientes campos relacionados con la colección:

Solo lectura
boolean. Si true, 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 _id de la colección.

listCollections.ok

El valor de retorno del comando. Un valor de 1 indica el éxito.

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
}

Para las opciones de colección:

Para obtener información sobre la colección:

Volver

killOp

En esta página