Definición
sh.moveCollection(namespace, toShard)Mueve una única colección no particionada a un diferente partición. Ejecuta
sh.moveCollection()con una instanciamongosmientras usas la base de datos admin.Importante
Método mongosh
Esta página documenta a Método
mongosh. Esta no es la documentación de comandos de base de datos ni de controladores específicos del lenguaje, como Node.js.Para el comando de base de datos, consulta el comando
moveCollection.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
Sintaxis
sh.moveCollection() tiene la siguiente sintaxis:
sh.moveCollection( "<namespace>", "<toShard>" )
Nota
Utiliza el comando listShards para recuperar el ID de la partición de destino.
Parámetros
sh.moveCollection() toma los siguientes parámetros:
Parameter | Tipo | Descripción |
|---|---|---|
| string | Base de datos y nombre de la colección a trasladar. |
| string | ID de la partición receptora. |
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando no está disponible en el nivel Atlas Free ni Flex.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Considerations
sh.moveCollection()solo se puede ejecutar en clústeres segmentados.sh.moveCollection()solo puede mover colecciones que no estén fragmentadas.sh.moveCollection()solo puede mover una colección a la vez.sh.moveCollection()tiene una duración mínima de 5 minutos.Si la colección que se está moviendo utiliza MongoDB Search, sus índices de búsqueda se vuelven inaccesibles después de que
moveCollectionse complete. Debe reconstruir manualmente los índices de búsqueda.No puedes realizar cambios de topología, como agregar o remover particiones o pasar de servidores de configuración integrados a dedicados, hasta que
moveCollectioneste completado.No puedes ejecutar las siguientes operaciones en la colección que se está moviendo mientras
sh.moveCollection()esté en curso:No puede ejecutar las siguientes operaciones en el clúster mientras
moveCollectionestá en progreso:Las creaciones de índices que ocurran mientras
sh.moveCollection()esté en curso podrían fallar silenciosamente.No crear índices mientras
sh.moveCollection()esté en curso.No llame a
sh.moveCollection()si hay creaciones de índices en curso.
Requisitos
Antes de trasladar tu colección, asegúrate de cumplir los siguientes requisitos:
Su aplicación puede tolerar un período de dos segundos en el que la colección afectada bloquea los guardados. Durante el periodo en el que las écritas están bloqueadas, tu aplicación experimenta un aumento en la latencia.
Su base de datos cumple con estos requisitos de recursos:
Asegúrate de que la partición a la que mueves la colección tenga suficiente espacio de almacenamiento para la colección y sus índices. La partición de destino requiere al menos
( Collection storage size + Index Size ) * 2bytes disponibles.Asegúrate de que tu capacidad de E/S esté por debajo de 50%.
Asegúrate de que la carga de tu CPU esté por debajo del 80%.
Importante
Estos requisitos no son exigidos por la base de datos. Una falta de asignación de suficientes recursos puede provocar:
la base de datos se queda sin espacio y se apaga
rendimiento reducido
la operación tarda más de lo esperado
Si tu aplicación tiene periodos de menor tráfico, realiza esta operación en la colección durante ese tiempo si es posible.
Ejemplos
Este ejemplo mueve una colección no particionada llamada inventory en la base de datos app a la partición shard02.
sh.moveCollection( "app.inventory", "shard02" )
Para obtener una lista de los ID de partición disponibles, ejecute sh.status(). Para más detalles, vea sh.status() Output.