Definición
sh.moveCollection(namespace, toShard)Mueve una única colección no fragmentada a una diferente fragmento. Ejecute
sh.moveCollection()con una instancia mientras usa lamongosbasede datos de administración.Importante
Método mongosh
Esta página documenta una
mongoshMétodo. Esta no es la documentación para comandos de base de datos ni para 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
Utilice el comando para recuperar el ID del fragmento del listShards destinatario.
Parámetros
sh.moveCollection() toma los siguientes parámetros:
Parameter | Tipo | Descripción |
|---|---|---|
| string | Base de datos y nombre de la colección a mover. |
| string | ID del fragmento destinatario. |
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 los niveles Atlas Free y 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()Sólo se puede ejecutar en clústeres fragmentados.sh.moveCollection()Sólo se pueden mover colecciones no fragmentadas.sh.moveCollection()solo puede mover una colección a la vez.sh.moveCollection()tiene una duración mínima de 5 minutos.Los índices de búsqueda de MongoDB deben reconstruirse después de que se ejecuta
moveCollection.No se pueden realizar cambios en la topología, como agregar o eliminar fragmentos o realizar transiciones entre servidores de configuración integrados y dedicados, hasta que se complete
moveCollection.No se pueden ejecutar las siguientes operaciones contra la colección que se está moviendo mientras
sh.moveCollection()está en progreso:No se pueden ejecutar las siguientes operaciones contra el clúster mientras
moveCollectionesté en progreso:Las compilaciones de índices que ocurren mientras
sh.moveCollection()está en progreso pueden fallar silenciosamente.No cree índices mientras
sh.moveCollection()esté en progreso.No llame a
sh.moveCollection()si hay compilaciones de índices en curso.
Requisitos
Antes de trasladar su colección, asegúrese de cumplir los siguientes requisitos:
Su aplicación puede tolerar un periodo de dos segundos en el que la colección afectada bloquea las escrituras. Durante este periodo, la aplicación experimenta un aumento de latencia.
Su base de datos cumple estos requisitos de recursos:
Asegúrese de que el fragmento al que va a mover la colección tenga suficiente espacio de almacenamiento para la colección y sus índices. El fragmento de destino requiere al menos
( Collection storage size + Index Size ) * 2bytes disponibles.Asegúrese de que su capacidad de E/S esté por debajo del 50%.
Asegúrese de que la carga de su CPU esté por debajo del 80%.
Importante
La base de datos no exige estos requisitos. Si no se asignan suficientes recursos, pueden producirse las siguientes consecuencias:
La base de datos se está quedando sin espacio y se está apagando
disminución del rendimiento
La operación tardó más de lo esperado
Si su aplicación tiene períodos de tiempo con menos tráfico, realice esta operación en la colección durante ese tiempo si es posible.
Ejemplos
Este ejemplo mueve una colección no fragmentada llamada inventory de la base de datos app al fragmento shard02.
sh.moveCollection( "app.inventory", "shard02" )
Para obtener una lista de los ID de fragmentos disponibles,sh.status() ejecute. Para más detalles, consulte la salida de sh.status().