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

sh.removeRangeFromZone()

Nesta página

  • Definição
  • Compatibilidade
  • Comportamento
  • Exemplo
sh.removeRangeFromZone(namespace, minimum, maximum)

Novidade na versão 3.4.

Remove a associação entre uma faixa de valores da chave de shard e umazona .

sh.removeRangeFromZone() usa os seguintes campos:

Parâmetro
Tipo
Descrição

namespace

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 do mongos .

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

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.

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.

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.

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.

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().

Voltar

sh.moveChunk