Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

setDefaultRWConcern (comando de base de datos)

setDefaultRWConcern

La setDefaultRWConcern El comando administrativo establece la configuración global por defecto de concern de lectura o de nivel de confirmación de escritura (write concern) para un set de réplicas o clúster. Debe ejecutarse setDefaultRWConcern contra la base de datos admin.

  • Para sets de réplicas, ejecuta el comando setDefaultRWConcern en el primario mongod.

  • Para clústeres fragmentados, emita la setDefaultRWConcern en un mongos.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • 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.adminCommand(
{
setDefaultRWConcern : 1,
defaultReadConcern: { <read concern> },
defaultWriteConcern: { <write concern> },
writeConcern: { <write concern> },
comment: <any>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

int

Se debe establecer en 1.

object

Documento que contiene la configuración global del nivel de consistencia de lectura. Especifica un objeto de nivel de consistencia de lecturaválido.

  • setDefaultRWConcern soporta el siguiente subconjunto de nivel:

  • Para desactivar el nivel de consistencia de lectura por defecto, especifica un documento vacío {}.

  • setDefaultRWConcern admite únicamente la configuración de nivel de consistencia de lectura levels. No se puede especificar ninguna otra configuración de nivel de consistencia de lectura en el nivel de consistencia de lectura por defecto.

Omitir este documento para dejar sin modificar el nivel de consistencia de lectura global actual. Si se omite, setDefaultRWConcern debe especificar defaultWriteConcern.

object

Documento que contiene la configuración global predeterminada de nivel de confirmación de escritura (write concern).

  • Para la configuración de nivel de confirmación de escritura (write concern) w, setDefaultRWConcern soporta todos los valores de nivel de confirmación de escritura (write concern) excepto w : 0.

  • Para la configuración de nivel de confirmación de escritura (write concern) wtimeout, setDefaultRWConcern es por defecto 0 si se omite dicha configuración. Las operaciones se bloquean hasta que se cumple el nivel de confirmación de escritura (write concern) solicitado. Si especificas un wtimeout por defecto global, asegúrate de que el valor sea lo suficientemente grande para permitir que las operaciones de escritura alcancen el nivel de confirmación de escritura (write concern).

  • Para desactivar el nivel de confirmación de escritura (write concern) configurado actualmente, especifique un documento vacío {}.

Omite este documento para dejar la configuración de nivel de confirmación de escritura (write concern) global actual sin modificar. Si se omite, setDefaultRWConcern debe especificar defaultReadConcern.

Objeto

opcional. Un documento que especifica el nivel de confirmación de escritura (write concern) que se debe usar en el propio comando setDefaultRWConcern.

Si se omite, setDefaultRWConcern utiliza el nivel de confirmación de escritura (write concern) global previamente establecido si se configuró uno.

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

setDefaultRWConcern devuelve un objeto que contiene la configuración global actual de preocupación de lectura y nivel de confirmación de escritura (write concern) por defecto. Consulta getDefaultRWConcern para obtener documentación más completa sobre los campos devueltos.

Nota

Requiere featureCompatibilityVersion 4.4+

Cada mongod en el set de réplicas o clúster debe tener featureCompatibilityVersion configurado al menos en 4.4 para usar setDefaultRWConcern.

A partir de MongoDB 5.0, una vez que el nivel de confirmación de escritura (write concern) de todo el clúster (CWWC) se configura mediante el comando setDefaultRWConcern, no se puede desactivar el nivel de confirmación de escritura (write concern).

MongoDB sólo aplica el nivel de confirmación de escritura (write concern) o lectura global por defecto a operaciones que no especifican explícitamente un nivel de confirmación de escritura (write concern) o lectura.

Si MongoDB aplica la configuración predeterminada global de lectura o nivel de confirmación de escritura (write concern) a una operación, esta se comporta como si dicha configuración de lectura o nivel de confirmación de escritura (write concern) hubiera sido especificada explícitamente por el cliente que emite la solicitud.

Emite setDefaultRWConcern contra el set de réplicas primario. El primario replica la nueva configuración global por defecto a los miembros restantes del set de réplicas. Los secundarios que aún no hayan replicado la configuración global por defecto actualizada continuarán utilizando su copia local "obsoleta" de la configuración por defecto.

Emita el comando setDefaultRWConcern con un writeConcern de w : "majority" para asegurar que el comando sólo regrese después de que los cambios se hayan propagado a la mayoría de los miembros del conjunto de réplicas.

Ejecute setDefaultRWConcern contra un mongos en el clúster. El mongos persiste la configuración actualizada en el conjunto de réplicas de servidores de configuración (CSRS). Cada mongos emite periódicamente un getDefaultRWConcern contra el CSRS para actualizar su copia local de la configuración global. Un mongos utiliza su copia local "anticuada" de los valores predeterminados globales durante el período entre actualizaciones.

Advertencia

Si está convirtiendo un set de réplicas en un cluster shardeado, no se puede ejecutar el comando setDefaultRWConcern hasta que se complete la conversión.

Ejecute el comando setDefaultRWConcern con un writeConcern de w : "majority" para garantizar que el comando solo se retorne después de que los cambios se hayan propagado a la mayoría de los nodos del CSRS.

Cuando una aplicación ejecuta una operación contra la mongos sin especificar de manera explícita un ajuste de lectura o nivel de confirmación de escritura (write concern), la mongos aplica la configuración predeterminada global correspondiente.

La configuración global por defecto no se propaga a las particiones individuales. No puedes ejecutar setDefaultRWConcern contra una partición.

Importante

setDefaultRWConcern requiere featureCompatibilityVersion 4.4+. Si se desciende la Versión de Compatibilidad de Características de la implementación de 4.4 a 4.2, se perderán todos los valores predeterminados de preocupación de lectura y escritura a nivel de clúster. Sin embargo, las instancias de mongos pueden seguir aplicando los valores predeterminados durante un máximo de 30 segundos.

Los comandos administrativos de sharding que realizan operaciones de escritura en el servidor de configuración, como los comandos enableSharding o addShard, tienen un comportamiento específico con la configuración global predeterminada de nivel de confirmación de escritura (write concern):

  • Los comandos usan "majority" independientemente de la configuración global por defecto del nivel de confirmación de escritura (write concern).

  • Los comandos usan un wtimeout mínimo de 60000. Los comandos solo utilizan el nivel de confirmación de escritura (write concern) global por defecto wtimeout si es mayor que 60000.

Para los sets de réplicas o clústeres que apliquen la autenticación en implementaciones autogestionadas, setDefaultRWConcern requiere que el usuario autenticado tenga la acción privilegio setDefaultRWConcern.

El rol incorporado clusterManager proporciona los privilegios necesarios para ejecutar setDefaultRWConcern.

La siguiente operación establece el nivel de confirmación de escritura (write concern) global en lo siguiente:

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : 2
}
})

La operación retorna un documento similar al siguiente:

{
"defaultWriteConcern" : {
"w" : 2
},
"updateOpTime" : Timestamp(1586290895, 1),
"updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"),
"localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"),
"ok" : 1,
"$clusterTime" : { ... }
"operationTime" : Timestamp(1586290925, 1)
}

La siguiente operación establece el nivel de consistencia de lectura global en "majority":

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultReadConcern" : { "level" : "majority" }
})

La operación retorna un documento similar al siguiente:

{
"defaultReadConcern" : {
"level" : "majority"
},
"updateOpTime" : Timestamp(1586290895, 1),
"updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"),
"localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"),
"ok" : 1,
"$clusterTime" : { ... }
"operationTime" : Timestamp(1586290925, 1)
}

La siguiente operación establece el nivel de confirmación de escritura (write concern) y lectura global por defecto en lo siguiente:

  • w: 2 nivel de confirmación de escritura (write concern)

  • level: "majority" nivel de consistencia de lectura.

db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : 2
},
"defaultReadConcern" : { "level" : "majority" }
})

La operación retorna un documento similar al siguiente:

"defaultWriteConcern" : {
"w" : 2
},
"defaultReadConcern" : {
"level" : "majority"
}

Puede:

  • Desactivar el nivel de consistencia de lectura global por defecto.

  • Solo desactive el nivel de confirmación de escritura (write concern) predeterminado global si aún no lo ha configurado.

Por ejemplo, supón que el nivel de consistencia de lectura global por defecto está configurado en level: "majority". Para desactivar el nivel de consistencia de lectura global por defecto, utiliza un documento vacío {}:

db.adminCommand( {
"setDefaultRWConcern" : 1,
"defaultReadConcern" : {}
} )

La operación devuelve un documento que indica que la operación fue exitosa:

{
defaultReadConcern: { level: 'local' },
defaultWriteConcern: { w: 2, wtimeout: 0 },
updateOpTime: Timestamp({ t: 1656696934, i: 1 }),
updateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"),
defaultWriteConcernSource: 'global',
defaultReadConcernSource: 'implicit',
localUpdateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"),
ok: 1,
'$clusterTime': {
...
},
operationTime: Timestamp({ t: 1656632593, i: 1 })
}

Solo puedes desmarcar el nivel de confirmación de escritura (write concern) por defecto global si no lo has configurado previamente.

Para desactivar la nivel de confirmación de escritura (write concern) por defecto global, debes usar un documento vacío {}:

db.adminCommand( {
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {}
} )

Si el nivel de confirmación de escritura (write concern) predeterminado global es:

  • Sin establecer, la operación es exitosa.

  • Ya definido, la operación devuelve el siguiente error.

MongoServerError: The global default write concern cannot be unset
once it is set.

Volver

setParameter

En esta página