O comando renameCollection renomeia uma coleção com o novo nome especificado na configuração de armazenamento. Você pode executar esse comando somente no admin banco de banco de dados, que é o Atlas user banco de banco de dados de autenticação do. O comando não é compatível com a renomeação de coleções criadas dinamicamente pelafunção de coleção de curingas (collectionName()).
Sintaxe
db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
Campos
Campo | Tipo | Descrição | Obrigatório? |
|---|---|---|---|
| string | O namespace da coleção , que inclui o nome do banco de dados de dados, um separador de ponto ( | sim |
| string | O novo nome para a coleção especificada como namespace, que inclui o nome do banco de dados de dados, um separador de ponto (
| sim |
| 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 | no |
Saída
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 }
Exemplos
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/*" }] } ] } ]
Exemplo básico
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 }
dropTarget Exemplo
O seguinte comando renameCollection:
Renomeia a coleção
weatherno banco de dados denominadamultiCollDBparaairbnb, que é o nome de uma coleção existente no mesmo banco de dados.Substitui os dados da collection
airbnbpelos dados da collectionweather.
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" } ] }] }] } }
Verificar collection
Você pode verificar se o comando foi bem-sucedido executando qualquer um dos seguintes comandos:
show collections db.runCommand({ "storageGetConfig" : 1 })
Solução de problemas de erros
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.