renameCollection
Nesta página
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
weather
no banco de dados denominadamultiCollDB
paraairbnb
, que é o nome de uma coleção existente no mesmo banco de dados.Substitui os dados da collection
airbnb
pelos 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.