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

renameCollection

Nesta página

  • Sintaxe
  • Campos
  • Saída
  • Exemplos
  • Exemplo básico
  • dropTarget Exemplo
  • Verificar collection
  • Solução de problemas de erros

O comando renameCollection renomeia uma coleção com o novo nome especificado na configuração de armazenamento. Você pode executar esse comando somente no banco de dados admin , que é o banco dedados de autenticação do usuário do Atlas . O comando não é compatível com a renomeação de coleções criadas dinamicamente pelafunção de coleção de curingas (collectionName()).

db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
Campo
Tipo
Descrição
Obrigatório?
renameCollection
string
O namespace da coleção , que inclui o nome do banco de dados, um separador de ponto (.) e o nome da coleção. Por exemplo: <database>.<collection>
sim
to
string

O novo nome para a coleção especificada como namespace, que inclui o nome do banco de dados, um separador de ponto (.) e o novo nome da coleção. O novo nome:

  • Deve ser exclusivo se dropTarget for omitido ou definido como false.

  • Pode ser o nome de uma coleção existente no mesmo banco de dados se dropTarget for especificado e estiver configurado para true (isto é, dropTarget == true).

sim
dropTarget
booleano
Especifica se a coleção deve ou não ser renomeada para um nome que já exista no banco de dados. O valor pode ser true ou false. O valor padrão é false, o que significa que o novo nome da coleção deve ser exclusivo. Se true, substituirá os dados da coleção existente pelos dados da coleção renomeada.
não

O comando retornará a seguinte saída se for bem-sucedido. Você pode verificar os resultados executando os comandos em Verificar Coleção. Se falhar, consulte Solucionar erros abaixo para obter as soluções recomendadas.

{ "ok" : 1 }

Estes exemplos usam os seguintes databases e collections na configuração de armazenamento:

"databases" : [
{
"name": "multiCollDB",
"collections": [
{
"name": "air_airlines",
"dataSources": [{
"storeName" : "egS3Store",
"path" : "egData/air_airlines.json"
}]
},
{
"name": "airbnb",
"dataSources": [{
"storeName" : "sampleS3Store",
"path" : "json/airbnb/*"
}]
},
{
"name": "weather",
"dataSources": [{
"storeName" : "sampleS3Store",
"path" : "json/weather/*"
}]
}
]
}
]

O comando renameCollection a seguir renomeia a coleção air_airlines no banco de dados denominado multiCollDB a airlines.

use admin
db.runCommand({ "renameCollection": "multiCollDB.air_airlines", "to": "multiCollDB.airlines" })

O comando anterior imprime a seguinte saída:

{ "ok" : 1 }

O seguinte comando renameCollection:

  1. Renomeia a coleção weather no banco de dados denominada multiCollDB para airbnb, que é o nome de uma coleção existente no mesmo banco de dados.

  2. Substitui os dados da collection airbnb pelos dados da collection weather.

use admin
db.runCommand({ "renameCollection": "multiCollDB.weather", "to": "multiCollDB.airbnb", "dropTarget": true })

O comando anterior imprime a seguinte saída:

{ "ok" : 1 }

O comando a seguir mostra que a coleção foi renomeada com sucesso:

> show collections
airbnb
> db.runCommand({ "storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "sbx-data-federation",
"delimiter" : "/",
"prefix" : ""
}
],
"databases" : [{
"name" : "multiCollDB",
"collections" : [{
"name": "airbnb",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "/json/airbnb"
}
]
}]
}]
}
}

Você pode verificar se o comando foi bem-sucedido executando qualquer um dos seguintes comandos:

show collections
db.runCommand({ "storageGetConfig" : 1 })

Se o comando falhar, ele retornará um dos seguintes erros:

{
"ok": 0,
"errmsg": "renameCollection can only be run against the admin database",
"code": 13,
"codeName": "Unauthorized"
}

Solução: alterne para o banco de dados do admin e execute o comando novamente. Para alternar para o banco de dados admin, execute o comando use admin.

{
"ok": 0,
"errmsg": "Invalid namespace specified '<ns>'",
"code": 73,
"codeName": "InvalidNamespace"
}

Solução: Verifique se o namespace especificado (banco de dados ou coleção) existe na configuração de armazenamento.

{
"ok": 0,
"errmsg": "Invalid target namespace: <namespace>",
"code": 73,
"codeName": "InvalidNamespace"
}

Solução: Verifique se o namespace (banco de dados ou coleção) especificado com o campo to é válido.

{
"ok": 0,
"errmsg": "target namespace exists",
"code": 48,
"codeName": "NamespaceExists"
}

Solução: Verifique se uma coleção com o nome especificado ainda não existe. O nome da coleção deverá ser exclusivo se dropTarget for omitido ou definido como false.

{
"ok": 0,
"errmsg": "source namespace does not exist",
"code": 26,
"codeName": "NamespaceNotFound"
}

Solução: Verifique se o nome do banco de dados é válido e existe na configuração de armazenamento.

{
"ok": 0,
"errmsg": "cannot rename a collection created from a wildcard",
"code": 73,
"codeName": "InvalidNamespace"
}

Solução: As coleções criadas pela função de coleção curinga (collectionName()) não podem ser renomeadas.

Voltar

Adicionar collections e visualizações