Definición
setDefaultRWConcernLa
setDefaultRWConcernEl comando administrativo establece la configuración global predeterminada de lectura o escritura para un conjunto de réplicas o un clúster fragmentado. debe ejecutarse contrasetDefaultRWConcernlaadminbase de datos.Para sets de réplicas, ejecuta el comando
setDefaultRWConcernen el primariomongod.Para clústeres fragmentados, emita en
setDefaultRWConcernmongosun.
Compatibilidad
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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { setDefaultRWConcern : 1, defaultReadConcern: { <read concern> }, defaultWriteConcern: { <write concern> }, writeConcern: { <write concern> }, comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| Se debe establecer en | |
| Documento que contiene la configuración global del nivel de consistencia de lectura. Especifica un objeto de nivel de consistencia de lecturaválido.
Omitir este documento para dejar sin modificar el nivel de consistencia de lectura global actual. Si se omite, | |
| Documento que contiene la configuración global de escritura predeterminada.
Omita este documento para no modificar la preocupación de escritura global actual. Si se omite, debe | |
Objeto | Opcional. Un documento que especifica la preocupación de escritura que utilizará el Si se omite, | |
| 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 predeterminada de lectura y escritura. Consulte para obtener documentación más completa sobre los campos getDefaultRWConcern devueltos.
Comportamiento
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.
Sets de réplicas
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.
Clústeres fragmentados
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.
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 reduce la featureCompatibilityVersion de su implementación 4.4 de 4.2 a, se perderán todos mongos los 30 valores predeterminados de lectura y escritura del clúster, pero las instancias podrán seguir aplicándolos durante un máximo de segundos.
Los comandos administrativos de fragmentación anulan la configuración de escritura
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 utilizan independientemente del problema de escritura predeterminado global
"majority"configurado.Los comandos utilizan un tiempo de espera mínimo
60000de. Solo utilizan el valor predeterminado de escritura globalwtimeoutsi es mayor60000que.
Control de acceso
Para los conjuntos de réplicas o clústeres fragmentados que aplican la autenticación en implementaciones autoadministradas, setDefaultRWConcern requiere que el usuario autenticado tenga el privilegio de setDefaultRWConcern acción.
El rol incorporado clusterManager proporciona los privilegios necesarios para ejecutar setDefaultRWConcern.
Ejemplo
Establezca el nivel de confirmación de escritura (write concern) global por defecto
La siguiente operación establece la preocupación de escritura 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) }
Configurar el nivel de consistencia de lectura global por defecto
La siguiente operación establece la preocupación de lectura global "majority" en:
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) }
Configura el nivel de confirmación de lectura y nivel de confirmación de escritura (write concern) global por defecto
La siguiente operación establece la preocupación global de lectura y escritura predeterminada como sigue:
w: 2nivel 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" }
Preocupación por lectura y escritura predeterminada global no establecida
Puede:
Desactivar el nivel de consistencia de lectura global por defecto.
Solo anule la configuración de escritura predeterminada global si aún no la 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.