Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

renameCollection

El comando renameCollection cambia el nombre de una colección al nuevo nombre especificado en la configuración de almacenamiento. Solo puedes ejecutar este comando en la base de datos admin, que es la base de datos de autenticación de usuarios de Atlas. El comando no admite cambiar el nombre de colecciones creadas dinámicamente por la función de colección comodín (collectionName()).

db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
Campo
Tipo
Descripción
¿Requerido?

renameCollection

string

La colección namespace, que incluye el nombre de la base de datos, un separador de punto (.) y el nombre de la colección. Por ejemplo: <database>.<collection>

to

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 (.) y el nuevo nombre de la colección. El nuevo nombre:

  • Debe ser único si se omite dropTarget o si está configurado en false.

  • Puede ser el nombre de una colección existente en la misma base de datos si dropTarget está especificado y establecido en true (es decir, dropTarget == true).

dropTarget

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 true o false. El valor por defecto es false, lo que significa que el nuevo nombre de la colección debe ser único. Si true, sobrescribe los datos de la colección existente con los datos de la colección renombrada.

no

El comando devuelve la siguiente salida si tiene éxito. Puedes verificar los resultados ejecutando los comandos en Verificar colección. Si falla, consulta Solucionar errores a continuación para obtener soluciones recomendadas.

{ "ok" : 1 }

Estos ejemplos usan 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/*"
}]
}
]
}
]

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 }

El siguiente comando renameCollection:

  1. Renombra la colección weather en la base de datos llamada multiCollDB a airbnb, que es el nombre de una colección existente en la misma base de datos.

  2. Reemplaza los datos de la colección airbnb con los datos de la colección weather.

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 fue renombrada correctamente:

> 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"
}
]
}]
}]
}
}

Puede verificar que el comando se realizó correctamente ejecutando cualquiera de los siguientes comandos:

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

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: Comprueba que no exista ya una colección con el nombre especificado. El nombre de la colección debe ser único si dropTarget se omite o se configura en false.

{
"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.