sh.removeRangeFromZone()
Nesta página
Definição
sh.removeRangeFromZone(namespace, minimum, maximum)
Remove a associação entre uma faixa de valores da chave de shard e umazona .
sh.removeRangeFromZone()
usa os seguintes campos:ParâmetroTipoDescriçãonamespace
string
O namespace da collection fragmentada para associar à zona.
A coleção deve ser fragmentada para que a operação seja bem-sucedida.
minimum
documento
O limite inferior inclusivo do intervalo de valores de chave de fragmento .
Especifique cada campo da chave de fragmento na forma de
<fieldname> : <value>
. O valor deve ser do mesmo tipo ou tipos de BSON que a chave de shard.maximum
documento
O limite superior exclusivo do intervalo de valores da chave de fragmento .
Especifique cada campo da chave de fragmento na forma de
<fieldname> : <value>
. O valor deve ser do mesmo tipo ou tipos de BSON que a chave de shard.Use
sh.removeRangeFromZone()
para remover a associação entre intervalos de chaves de fragmento não utilizados, desatualizados ou conflitantes e uma zona.Se nenhum intervalo corresponder aos limites mínimo e máximo passados para
sh.removeRangeFromZone()
, nada será removido.Execute
sh.removeRangeFromZone()
somente quando conectado a uma instância domongos
.
Compatibilidade
Esse método 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
Comportamento
sh.removeRangeFromZone()
não remove a associação entre uma zona e um fragmento. Também não remove a zona em si.
Consulte a página do manual de zonas para obter mais informações sobre zonas em clusters fragmentados.
Balancer
A remoção da associação entre uma faixa e uma zona remove as restrições que mantêm as partes cobertas pela faixa nos shards dentro dessa zona. Durante a próxima rodada do balanceador, o balanceador pode migrar partes que foram cobertos anteriormente pela zona.
Consulte a documentação do balanceador de cluster fragmentado para obter mais informações sobre como as migrações funcionam em um cluster fragmentado.
Segurança
Para clusters fragmentados em execução com autenticação, você deve autenticar como:
um usuário cujos privilégios incluem as ações especificadas em várias coleções no banco de dados
config
:ou, alternativamente
um usuário cujos privilégios incluem
enableSharding
no recurso do cluster .
As funções integradas clusterAdmin
ou clusterManager
têm as permissões apropriadas para executar sh.removeRangeFromZone()
. Consulte a página de documentação do Controle de Acesso Baseado em Funções para obter mais informações.
Exemplo
Dada uma collection fragmentada exampledb.collection
com uma chave de shard de { a
: 1 }
, a operação a seguir remove o intervalo com um limite inferior de 1
e um limite superior de 10
:
sh.removeRangeFromZone( "exampledb.collection", { a : 1 }, { a : 10 } )
Os min
e max
devem corresponder exatamente aos limites do intervalo alvo. A operação a seguir tenta remover o intervalo criado anteriormente, mas especifica { a : 0 }
como o limite min
:
admin = db.getSiblingDB("admin") admin.runCommand( { updateZoneKeyRange : "exampledb.collection", min : { a : 0 }, max : { a : 10 }, zone : null } )
Embora o intervalo de { a : 0 }
e { a : 10 }
englobe o intervalo existente, ele não é uma correspondência exata e, portanto, sh.removeRangeFromZone()
não remove nada.
Chave de shard composta
Dada uma collection fragmentada exampledb.collection
com uma chave de shard de { a : 1, b : 1 }
, a operação a seguir remove o intervalo com um limite inferior de { a : 1, b : 1}
e um limite superior de { a : 10, b : 10 }
:
sh.removeRangeFromZone( "exampledb.collection", { a : 1, b : 1 }, { a : 10, b : 10 } )
Dado o exemplo anterior, se houver uma faixa existente com um limite inferior de { a : 1, b : 5 }
e um limite superior de { a : 10, b : 1 }
, a operação não removerá essa faixa, pois não é uma correspondência exata do mínimo e do máximo passados para sh.removeRangeFromZone()
.