El comando renameCollection renombra una colección con el nuevo nombre especificado en la configuración de almacenamiento. Solo puedes ejecutar este comando en la base de datos admin, que es el Atlas user
base de datos de autenticación. El comando no admite cambiar el nombre de las colecciones creadas de manera dinámica por el
función de colección de comodines (collectionName()).
Sintaxis
db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
Campos
Campo | Tipo | Descripción | ¿Requerido? |
|---|---|---|---|
| string | La colección namespace, que incluye el nombre de la base de datos, un separador de punto ( | Sí |
| string | El nuevo nombre de la colección especificado como un namespace, que incluye el nombre de la base de datos, un separador de punto (
| Sí |
| booleano | Especifica si se debe o no renombrar la colección a un nombre que ya existe en la base de datos. El valor puede ser | no |
Salida
El comando devuelve la siguiente salida si se ejecuta con éxito. Se pueden verificar los resultados ejecutando los comandos en Verificar colección. Si falla, consulta Solucionar errores a continuación para obtener soluciones recomendadas.
{ "ok" : 1 }
Ejemplos
Estos ejemplos utilizan los siguientes databases y collections en la configuración de almacenamiento:
"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/*" }] } ] } ]
Ejemplo básico
El siguiente comando renameCollection renombra la colección air_airlines en la base de datos llamada multiCollDB a airlines.
use admin db.runCommand({ "renameCollection": "multiCollDB.air_airlines", "to": "multiCollDB.airlines" })
El comando anterior imprime la siguiente salida:
{ "ok" : 1 }
dropTarget Ejemplo
El siguiente comando renameCollection:
Renombra la colección
weatheren la base de datos llamadamultiCollDBaairbnb, que es el nombre de una colección existente en la misma base de datos.Reemplaza los datos de la colección
airbnbcon los datos de la colecciónweather.
use admin db.runCommand({ "renameCollection": "multiCollDB.weather", "to": "multiCollDB.airbnb", "dropTarget": true })
El comando anterior imprime la siguiente salida:
{ "ok" : 1 }
El siguiente comando muestra que la colección se renombró exitosamente:
> 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 Colección
Puede verificar que el comando se realizó correctamente ejecutando cualquiera de los siguientes comandos:
show collections db.runCommand({ "storageGetConfig" : 1 })
Solución de problemas de error
Si el comando falla, devuelve uno de los siguientes errores:
{ "ok": 0, "errmsg": "renameCollection can only be run against the admin database", "code": 13, "codeName": "Unauthorized" }
Solución: Cambia a la base de datos admin y vuelve a ejecutar el comando. Para cambiar a la base de datos admin, ejecuta el comando use admin.
{ "ok": 0, "errmsg": "Invalid namespace specified '<ns>'", "code": 73, "codeName": "InvalidNamespace" }
Solución: Verifique que el namespace especificado (base de datos o colección) exista en la configuración de almacenamiento.
{ "ok": 0, "errmsg": "Invalid target namespace: <namespace>", "code": 73, "codeName": "InvalidNamespace" }
Solución: Asegúrate de que el namespace (base de datos o colección) especificado con el campo to sea válido.
{ "ok": 0, "errmsg": "target namespace exists", "code": 48, "codeName": "NamespaceExists" }
Solución: Compruebe que no exista una colección con el nombre especificado. El nombre de la colección debe ser único si dropTarget se omite o se establece false en.
{ "ok": 0, "errmsg": "source namespace does not exist", "code": 26, "codeName": "NamespaceNotFound" }
Solución: Comprueba que el nombre de la base de datos sea válido y que exista en la configuración del almacenamiento.
{ "ok": 0, "errmsg": "cannot rename a collection created from a wildcard", "code": 73, "codeName": "InvalidNamespace" }
Solución: Las colecciones creadas por la función de colección comodín (collectionName()) no se pueden renombrar.