Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

db.getCollectionInfos() (método de mongosh)

db.getCollectionInfos(filter, options)

Devuelve un arreglo de documentos que contienen colección o ver información, como el nombre y las opciones, de la base de datos actual. Los resultados dependen de los privilegios del usuario. Para más detalles, consulta Acceso requerido.

El asistente db.getCollectionInfos() envuelve el comando listCollections.

El método db.getCollectionInfos() tiene los siguientes parámetros:

Parameter
Tipo
Descripción

filter

Documento

Opcional. Un predicado de query para filtrar la lista de colecciones.

Puedes especificar un predicado de query en cualquiera de los campos devueltos por db.getCollectionInfos().

options

Documento

Opcional. Un documento que especifica opciones adicionales para el comando. Para obtener una lista de opciones disponibles, consulta Opciones.

Puede especificar las siguientes opciones en el documento options de un comando db.getCollectionInfos():

Opción
Tipo
Descripción

nameOnly

booleano

Opcional. Una bandera para indicar si el comando devuelve solo el nombre y el tipo (view, collection, o timeseries) o devuelve 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.

Para un ejemplo, consulta Devolver solo nombres de colección.

authorizedCollections

booleano

Opcional. Cuando true se establece en y nameOnly: true se usa con, permite que un usuario sin el privilegio requerido (como la acción en la base de datos) listCollections ejecute db.getCollectionInfos() 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.

  • Si un usuario tiene alguna acción de permiso en el recurso de la base de datos, el comando lista todas las colecciones en la base de datos.

El valor por defecto es false, lo que significa que el usuario debe tener listCollections acción en 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.

Este método 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 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 concede el privilegio de ejecutar db.getCollectionInfos() contra 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
}
)

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 collections enumera las colecciones no pertenecientes al sistema de la base de datos.

  • Para los usuarios sin el acceso requerido, show collections enumera solo las colecciones para las que el usuario tiene privilegios.

Si el cliente que emitió db.getCollectionInfos() se desconecta antes de que la operación se complete, MongoDB marca db.getCollectionInfos() para su terminación usando killOp.

Para que se ejecuten en un set de réplicas, las operaciones de listCollections requieren que el nodo esté en estado PRIMARY o SECONDARY. Si el nodo se encuentra en otro estado, como STARTUP2, se produce un error en la operación.

La siguiente información devuelve todas las colecciones en la base de datos example:

use example
db.getCollectionInfos()
[
{
"name" : "employees",
"type" : "collection",
"options" : {
"flags" : 1,
"validator" : {
"$or" : [
{
"phone" : {
"$exists" : true
}
},
{
"email" : {
"$exists" : true
}
}
]
}
},
"info" : {
"readOnly" : false,
"uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "example.employees"
}
},
{
"name" : "products",
"type" : "collection",
"options" : {
"flags" : 1
},
"info" : {
"readOnly" : false,
"uuid" : UUID("1bc898b2-3b91-45e4-9d8b-0be462d5a157")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "example.products"
}
},
{
"name" : "mylogs",
"type" : "collection",
"options" : {
"capped" : true,
"size" : 256
},
"info" : {
"readOnly" : true,
"uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "example.mylogs"
}
}
]

Para devolver solo los nombres de las colecciones de la base de datos actual, especifique la opción nameOnly: true. Por ejemplo:

use example
db.getCollectionInfos( {}, { nameOnly: true } )
[
{ name: 'products', type: 'collection' },
{ name: 'weather', type: 'timeseries' },
{ name: 'system.buckets.weather', type: 'collection' },
{ name: 'system.views', type: 'collection' },
{ name: 'sales', type: 'collection' }
]

Para solicitar información sobre una colección específica, especifica el nombre de la colección en el documento de filtro. El siguiente ejemplo devuelve un arreglo con un solo documento que detalla la información de la colección para la colección employees en la base de datos example.

use example
db.getCollectionInfos( { name: "employees" } )
[
{
"name" : "employees",
"type" : "collection",
"options" : {
"flags" : 1,
"validator" : {
"$or" : [
{
"phone" : {
"$exists" : true
}
},
{
"email" : {
"$exists" : true
}
}
]
}
},
"info" : {
"readOnly" : false,
"uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "example.employees"
}
}
]

Puede especificar un filtro en cualquiera de los campos devueltos por db.getCollectionInfos().

Por ejemplo, el siguiente comando devuelve información para todas las colecciones en la base de datos example donde info.readOnly es true:

use example
db.getCollectionInfos( { "info.readOnly" : true } )
[
{
"name" : "mylogs",
"type" : "collection",
"options" : {
"capped" : true,
"size" : 256
},
"info" : {
"readOnly" : true,
"uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "example.mylogs"
}
}
]

Volver

db.getCollection

En esta página