Definición
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Importante
Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.
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.
Restricciones
No se puede utilizar moveCollection para colecciones de cifrado consultable.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
Nota
Utilice el comando para recuperar el ID del fragmento del listShards destinatario.
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Base de datos y nombre de la colección a trasladar. |
| string | ID de la partición receptora. |
Considerations
moveCollectionSólo se puede ejecutar en clústeres fragmentados.moveCollectionsolo puede mover colecciones que no estén fragmentadas.moveCollectionsolo puede mover una colección a la vez.moveCollectiontiene una duración mínima de 5 minutos.Si la colección que se está moviendo utiliza MongoDB Search, sus índices de búsqueda dejan de estar disponibles una vez que
moveCollectionfinaliza. Debe reconstruir manualmente los índices de búsqueda.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 puedes ejecutar las siguientes operaciones en la colección que se está moviendo mientras
moveCollectionesté en curso:No se pueden ejecutar las siguientes operaciones contra el clúster mientras
moveCollectionesté en progreso:Las creaciones de índices que ocurran mientras
moveCollectionesté en curso podrían fallar silenciosamente.No cree índices mientras
moveCollectionesté en progreso.No llame a
moveCollectionsi 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 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 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
La base de datos no exige estos requisitos. Si no se asignan suficientes recursos, pueden producirse las siguientes consecuencias:
la base de datos se queda sin espacio y se apaga
rendimiento reducido
la operación tarda 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.
Ejemplo
Este ejemplo mueve una colección no particionada llamada inventory en la base de datos app a la partición shard02.
db.adminCommand( { moveCollection: "app.inventory", toShard: "shard02" } )
Para obtener una lista de los ID de fragmentos disponibles,sh.status() ejecute. Para más detalles, consulte la salida de sh.status().