Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

setDefaultRWConcern

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplo
setDefaultRWConcern

O comando administrativo setDefaultRWConcern define a configuração padrão global de preocupação de leitura ou gravação de um conjunto de réplicas ou cluster fragmentado. setDefaultRWConcern deve ser executado no banco de dados admin.

  • Para conjuntos de réplicas, emita o comando setDefaultRWConcern no primário mongod.

  • Para clusters fragmentados, emita o setDefaultRWConcern em um mongos.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.adminCommand(
{
setDefaultRWConcern : 1,
defaultReadConcern: { <read concern> },
defaultWriteConcern: { <write concern> },
writeConcern: { <write concern> },
comment: <any>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
int

Defina como 1.

object

Documento que contém a configuração global de read concern. Especifique um objeto de read concern válido.

  • setDefaultRWConcern oferece suporte ao seguinte subconjunto de nível:

  • Para cancelar o read concern padrão atualmente configurado, especifique um documento vazio {}.

  • setDefaultRWConcern aceita apenas a configuração de preocupação de leitura levels. Não é possível especificar nenhuma outra configuração de preocupação de leitura na preocupação de leitura padrão.

Omita este documento para deixar inalterado o atual write concern global. Se omitido, setDefaultRWConcern deve especificar defaultWriteConcern.

object

Documento que contém a configuração de write concern padrão global.

  • Para a configuração da preocupação de gravação w, setDefaultRWConcern suporta todos os valores da preocupação de gravação , exceto w : 0.

  • Na configuração de preocupação de gravação wtimeout, setDefaultRWConcern retorna ao padrão original 0 se a configuração for omitida. As operações são bloqueadas até que a preocupação de gravação solicitada seja atendida. Se estiver especificando um padrão global wtimeout, certifique-se de que o valor seja grande o suficiente para permitir que as operações de gravação atinjam a preocupação de gravação solicitada.

  • Para desmarcar o write concern configurado no momento, especifique um documento vazio {}.

Omita este documento para deixar a preocupação de gravação global atual inalterada. Se omitido, setDefaultRWConcern deve especificar defaultReadConcern.

objeto

Opcional. Documento que especifica a preocupação de gravação a ser usada pelo próprio comando setDefaultRWConcern.

Se omitido, setDefaultRWConcern usará a preocupação de gravação padrão global definida anteriormente se ela tiver sido configurada.

comment
any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

setDefaultRWConcern retorna um objeto que contém a preocupação de leitura e gravação padrão global atualmente configurada. Consulte getDefaultRWConcern para obter uma documentação mais completa sobre os campos retornados.

Observação

Exige featureCompatibilityVersion 4.4+

Cada mongod no conjunto de réplicas ou cluster fragmentado deve ter featureCompatibilityVersion configurado para pelo menos 4.4 para usar setDefaultRWConcern.

A partir do MongoDB 5.0, uma vez que o Cluster Wide Write Concern (CWWC) é definido por meio do comando setDefaultRWConcern , o problema de gravação não pode ser desconfigurado.

O MongoDB só aplica o read ou write concern global padrão a operações que não especificam explicitamente um read ou write concern.

Se o MongoDB aplicar o read ou write concern padrão global a uma operação, essa operação se comportará como se esse read ou write concern fosse explicitamente especificado pelo cliente emissor.

Problema setDefaultRWConcern em relação ao primário do conjunto de réplicas. O primário replica as novas configurações padrão globais para os nós restantes do conjunto de réplicas. Os secundários que ainda não replicaram as configurações padrão globais atualizadas continuam usando sua cópia "obsoleta" local dos padrões.

Emita o comando setDefaultRWConcern com uma writeConcern de w : "majority" para garantir que o comando retorne somente após as alterações propagarem para a maioria dos membros do conjunto de réplicas.

Emita o setDefaultRWConcern contra um mongos no cluster. O mongos mantém as configurações atualizadas no conjunto de réplicas do servidor de configuração (CSRS). Cada mongos emite periodicamente um getDefaultRWConcern no CSRS para atualizar sua cópia local das configurações globais. Um mongos usa sua cópia local "obsoleta" dos padrões globais durante o período de tempo entre as atualizações.

Emita o comando setDefaultRWConcern com um writeConcern de w : "majority" para garantir que o comando só retorne depois que as alterações tiverem se propagado para a maioria dos nós do CSRS.

Quando um aplicativo emite uma operação no mongos sem especificar explicitamente uma configuração de read ou write concern, o mongos aplica a configuração padrão global correspondente.

As configurações padrão globais não se propagam para os fragmentos individuais. Não é possível executar setDefaultRWConcern em um fragmento.

Importante

setDefaultRWConcern exige featureCompatibilityVersion 4.4+. Se você fizer o downgrade do featureCompatibilityVersion da sua implantação de 4.4 para 4.2, todos os padrões de preocupação de leitura e gravação em todo o cluster serão perdidos, mas as instâncias mongos poderão continuar aplicando os padrões por até 30 segundos.

O compartilhamento de comandos administrativos que executam operações de gravação no servidor de configuração, como os comandos enableSharding ou addShard, tem comportamento específico com configurações de write concern padrão global:

  • Os comandos usam o "majority" independentemente do write concern padrão global configurado.

  • Os comandos usam um wtimeout mínimo de 60000. Os comandos só usam o write concern padrão global wtimeout se ele for maior que 60000.

Para conjuntos de réplicas ou clusters fragmentados que forçam autenticação em sistemas autogerenciados, setDefaultRWConcern exige que o usuário autenticado tenha a ação de privilégio setDefaultRWConcern .

A função integrada clusterManager fornece os privilégios exigidos para executar o setDefaultRWConcern.

A seguinte operação define o write concern global para o seguinte:

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

A operação retorna um documento semelhante ao seguinte:

{
"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)
}

A operação a seguir define o read concern global como "majority":

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

A operação retorna um documento semelhante ao seguinte:

{
"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)
}

A operação a seguir define o read ou write concern padrão global para o seguinte:

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

A operação retorna um documento semelhante ao seguinte:

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

Você pode:

  • Desconfigure o read concern padrão global.

  • Desconfigure apenas o write concern padrão global se você ainda não o tiver definido.

Por exemplo, suponha que o read concern padrão global esteja configurado para level: "majority". Para desconfigurar o read concern padrão global, use um documento vazio {}:

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

A operação retorna um documento que indica que a operação foi bem-sucedida:

{
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 })
}

Você só pode desconfigurar a definição do write concern padrão global se ainda não o tiver definido.

Para desconfigurar o write concern padrão global, use um documento vazio {}:

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

Se o write concern padrão global:

  • For desconfigurado, a operação foi bem-sucedida.

  • Já estiver configurado, a operação retorna o seguinte erro.

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

Voltar

setParameter