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

setDefaultRWConcern (comando de base de datos)

setDefaultRWConcern

El comando administrativo setDefaultRWConcern establece la configuración global predeterminada de lectura o escritura para un conjunto de réplicas o un clúster fragmentado. setDefaultRWConcern debe ejecutarse en la base de datos admin.

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 admite el siguiente subconjunto de niveles:

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

  • setDefaultRWConcern solo admite la configuración de seguridad de lectura levels. No puede especificar ninguna otra configuración de seguridad de lectura en la seguridad de lectura predeterminada.

Omita este documento para dejar sin modificar la preocupación 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 preocupación de escritura w, setDefaultRWConcern admite todos los valores de preocupación de escritura excepto w : 0.

  • Para la configuración de seguridad de escritura wtimeout, setDefaultRWConcern se establece por defecto en 0 si se omite la configuración. Las operaciones se bloquean hasta que se cumple la seguridad de escritura solicitada. Si se especifica un valor predeterminado global wtimeout, asegúrese de que el valor sea lo suficientemente grande como para permitir que las operaciones de escritura alcancen la seguridad de escritura solicitada.

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

Omita este documento para dejar sin modificar la preocupación de escritura global actual. Si se omite, setDefaultRWConcern debe especificar defaultReadConcern.

Objeto

Opcional. Un documento que especifica la preocupación de escritura que utilizará el propio comando setDefaultRWConcern.

Si se omite, setDefaultRWConcern utiliza la preocupación de escritura global predeterminada establecida previamente si se configuró una.

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 predeterminada de lectura y escritura. Consulte getDefaultRWConcern para obtener documentación más completa sobre los campos devueltos.

Nota

Requiere featureCompatibilityVersion 4.4+

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

A partir de MongoDB 5.0, una vez que se establece la preocupación de escritura en todo el clúster (CWWC) mediante el comando setDefaultRWConcern, la preocupación de escritura no se puede desestablecer.

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.

Se implementa la incidencia setDefaultRWConcern en el nodo principal del conjunto de réplicas. El nodo principal replica la nueva configuración predeterminada global a los demás miembros del conjunto de réplicas. Los nodos secundarios que aún no han replicado la configuración predeterminada global actualizada continúan utilizando su copia local obsoleta de la configuración predeterminada.

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

Emita la solicitud setDefaultRWConcern contra una solicitud mongos en el clúster. La solicitud mongos guarda la configuración actualizada en el conjunto de réplicas del servidor de configuración (CSRS). Cada solicitud mongos emite periódicamente una solicitud getDefaultRWConcern contra el CSRS para actualizar su copia local de la configuración global. Una solicitud mongos utiliza su copia local obsoleta de la configuración global durante el intervalo entre actualizaciones.

Emita el comando setDefaultRWConcern con un writeConcern de w : "majority" para garantizar que el comando solo regrese después de que los cambios se hayan propagado a la mayoría de los miembros de 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 predeterminada no se propaga a los fragmentos individuales. No se puede ejecutar setDefaultRWConcern en un fragmento.

Importante

setDefaultRWConcern requiere featureCompatibilityVersion 4.4+. Si degrada la featureCompatibilityVersion de su implementación de 4.4 a 4.2, se perderán todos los valores predeterminados de lectura y escritura en todo el clúster, pero las instancias mongos pueden continuar 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 conjuntos de réplicas o clústeres fragmentados que aplican autenticación en implementaciones autogestionadas, setDefaultRWConcern requiere que el usuario autenticado tenga la acción de privilegio setDefaultRWConcern.

El rol integrado 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.