killAllSessionsByPattern
Definição
killAllSessionsByPattern
Novidade na versão 3.6.
O comando
killAllSessionsByPattern
finaliza todas as sessões que correspondem a qualquer um dos padrões especificados. [1]
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { killAllSessionsByPattern: [ <pattern>, ... ] } )
Compatibilidade
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
Importante
Este comando não é suportado em clusters M0, M2 e M5 . Para obter mais informações, 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
Campos de comando
O comando usa um array de documentos que especificam os padrões a serem correspondidos:
Padrão | Descrição |
---|---|
{ lsid: { id : <UUID> } } | Especifique a parte UUID do ID da sessão a ser eliminada. |
{ uid: <BinData> } | Especifica o hash do proprietário das sessões a serem eliminadas. |
{ users: [ { user: <user>, db: <dbname> }, ... ] } | Especifica os proprietários das sessões a serem eliminadas. Exige privilégios adicionais. Consulte Controle de acesso. |
{ roles: [ { role: <role>, db: <dbname> }, ... ] } | Especifica as roles atribuídas aos proprietários das sessões a serem eliminadas. Exige privilégios adicionais. Consulte Controle de acesso. |
Especifique uma matriz vazia para finalizar todas as sessões. [1]
Para visualizar sessões existentes, consulte operação $listSessions
ou $listLocalSessions
.
[1] | (1, 2) A operação killAllSessionsByPattern ignora sessões que têm transações no estado preparado. Consulte Comportamento para ver detalhes. |
Comportamento
Operações em andamento
A eliminação de uma sessão elimina as operações em andamento na sessão e fecha os cursores abertos associados a essas operações.
Disponibilidade de sessão eliminada
A sessão eliminada ainda pode estar listada como uma sessão atual e operações futuras podem usar a sessão eliminada. Para visualizar sessões existentes, consulte operação $listSessions
ou $listLocalSessions
.
Sessões com transação no estado preparado
A operação killAllSessionsByPattern
ignora sessões que possuem transações no estado preparado. As transações no estado preparado referem-se a transações com operações de gravação que abrangem vários shards cujo coordenador de confirmação concluiu o "sendingPrepare"
action
.
Controle de acesso
Se o sistema forçar autenticação/autorização, você deve ter a ação de privilégio killAnySession
para executar o comando killAllSessionsByPattern
.
Para padrões que incluem users
ou roles
, você também deve ter privilégios que concedam a ação impersonate
no recurso de cluster.
Observação
Os usuários podem finalizar suas próprias sessões mesmo sem a ação de privilégio do killAnySession
.
Exemplos
killAllSessions
A operação a seguir finaliza todas as sessões:
db.runCommand( { killAllSessionsByPattern: [ ] } )
Eliminar todas as sessões para usuários específicos
A operação a seguir finaliza todas as sessões que têm o uid
especificado e cujo proprietário tem o role especificado:
db.runCommand( { killAllSessionsByPattern: [ { "uid" : BinData(0,"oBRA45vMY78p1tv6kChjQPTdYsnCHi/kA/fFMZTIV1o=") }, { roles: [ { role: "readWrite", db: "test" } ] } ] } )