Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

db.updateRole() (método mongosh)

db.updateRole( rolename, update, writeConcern )

Actualiza un rol definido por el usuario. El db.updateRole() método debe ejecutarse en la base de datos del rol.

Importante

Método mongosh

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

Para el comando de base de datos, consulta el comando updateRole.

Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.

Una actualización de un campo reemplaza completamente los valores anteriores del campo. Para conceder o remover roles o privilegios sin reemplazar todos los valores, utiliza uno o más de los siguientes métodos:

Advertencia

Una actualización en el arreglo privileges o roles reemplaza completamente los valores anteriores del arreglo.

The db.updateRole() method uses the following syntax:

db.updateRole(
"<rolename>",
{
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions:
[
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
]
},
{ <writeConcern> }
)

The db.updateRole() method accepts the following arguments:

Parameter
Tipo
Descripción

rolename

string

El nombre del rol definido por el usuario que se debe actualizar.

update

Documento

Un documento que contiene los datos de reemplazo para el rol. Estos datos reemplazan completamente los datos correspondientes para el rol.

writeConcern

Documento

El documento update especifica los campos que se deben actualizar y los nuevos valores. Cada campo en el documento update es opcional, pero el documento debe incluir al menos un campo. El documento update contiene los siguientes campos:

Campo
Tipo
Descripción

privileges

arreglo

opcional. Se requiere si no especifica el roles arreglo. Los privilegios para otorgar el rol. Una actualización del arreglo privileges anula los valores anteriores del arreglo. Para conocer la sintaxis para especificar un privilegio, consulte el privileges arreglo.

roles

arreglo

opcional. Se requiere si no especifica el privileges arreglo. Los roles de los cuales este rol hereda privilegios. Una actualización en el arreglo roles anula los valores anteriores del arreglo.

authenticationRestrictions

arreglo

Opcional.

Las restricciones de autenticación que el servidor aplica al rol. Especifica una lista de direcciones IP y rangos CIDR a los que los usuarios con este rol pueden conectarse y/o desde los que pueden conectarse.

The db.updateRole() method wraps the updateRole command.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

Importante

Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta 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.

En el campo roles, puede especificar tanto roles de funcionalidad incorporada como roles definidos por el usuario.

To specify a role that exists in the same database where db.updateRole() runs, you can either specify the role with the name of the role:

"readWrite"

O puede especificar el rol con un documento, como en:

{ role: "<role>", db: "<database>" }

Para especificar un rol que existe en una base de datos diferente, especifique el rol mediante un documento.

El documento authenticationRestrictions solo puede contener los campos siguientes. El servidor genera un error si el documento authenticationRestrictions contiene un campo no reconocido:

Nombre de campo
Valor
Descripción

clientSource

Arreglo de direcciones IP y/o rangos CIDR

Si está presente, al autenticar a un usuario, el servidor verifica que la dirección IP del cliente esté en la lista proporcionada o que pertenezca a un rango CIDR de la lista. Si la dirección IP del cliente no está presente, el servidor no autentica al usuario.

serverAddress

Arreglo de direcciones IP y/o rangos CIDR

Una lista de direcciones IP o rangos CIDR a los que el cliente puede conectarse. Si está presente, el servidor verificará que la conexión del cliente haya sido aceptada mediante una dirección IP de la lista proporcionada. Si la conexión fue aceptada desde una dirección IP no reconocida, el servidor no autentica al usuario.

Importante

Si un usuario hereda múltiples roles con restricciones de autenticación incompatibles, ese usuario se vuelve inutilizable.

Por ejemplo, si un usuario hereda un rol en el que el campo clientSource es ["198.51.100.0"] y otro rol en el que el campo clientSource es ["203.0.113.0"], el servidor no puede autenticar al usuario.

Para obtener más información sobre la autenticación en MongoDB, consulta Autenticación en implementaciones autogestionadas.

If run on a replica set, db.updateRole() is executed using "majority" write concern by default.

Excepto por los roles creados en la base de datos admin, un rol solo puede incluir privilegios que se aplican a su base de datos y solo puede heredar de otros roles en su base de datos.

Un rol creado en la base de datos admin puede incluir privilegios que se aplican a la base de datos admin, a otras bases de datos o al recurso clúster, y puede heredar de roles en otras bases de datos, así como de la base de datos admin.

Cuando se especifica el arreglo privileges, se pueden especificar privilegios para aplicar a varias colecciones en una base de datos, o a una base de datos completa.

La siguiente sintaxis especifica privilegios en múltiples colecciones de la base de datos products.

privileges: [
{
resource: { db: 'products', collection: 'coll1' },
actions: [ 'bypassDocumentValidation' ]
},
{
resource: { db: 'products', collection: 'coll2' },
actions: [ 'bypassDocumentValidation' ]
}
]

La siguiente sintaxis especifica privilegios en todas las colecciones de la base de datos products.

privileges: [
{
resource: { db: 'products', collection: '' },
actions: [ 'bypassDocumentValidation' ]
}
]

Debes tener la revokeRole acción en todas las bases de datos para actualizar un rol.

Debes tener la grantRole acción en la base de datos de cada rol en el arreglo roles para actualizar el arreglo.

Debe tener la grantRole acción en la base de datos de cada privilegio en el arreglo privileges para actualizar el arreglo. Si uno de los recursos de un privilegio abarca bases de datos, debes tener grantRole en la base de datos admin. Un privilegio abarca bases de datos si el privilegio es cualquiera de los siguientes:

  • una colección en todas las bases de datos

  • todas las colecciones y todas las bases de datos

  • el recurso cluster

Debe tener la setAuthenticationRestriction acción en la base de datos del rol de destino para actualizar el documento authenticationRestrictions de un rol.

The following db.updateRole() method replaces the privileges and the roles for the inventoryControl role that exists in the products database. The method runs on the database that contains inventoryControl:

use products
db.updateRole(
"inventoryControl",
{
privileges:
[
{
resource: { db:"products", collection:"clothing" },
actions: [ "update", "createCollection", "createIndex"]
}
],
roles:
[
{
role: "read",
db: "products"
}
]
},
{ w:"majority" }
)

Para ver los privilegios de un rol, se utiliza el comando rolesInfo.