Definición
moveCollectionNuevo en la versión 8.0.
Mover una única colección que no está en fragmentos a otra partición. Ejecute
moveCollectioncon una instancia demongosmientras usa la base de datos admin.
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 puedes usar moveCollection para colecciones de Queryable Encryption.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
Nota
Utiliza el comando listShards para recuperar el ID de la partición de destino.
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
moveCollectionsolo se puede ejecutar en clústeres segmentados.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.writeConcernMajorityJournalDefaultdebe sertrue.Para mover una colección que tiene una restricción de unicidad, el nuevo Ãndice debe cumplir con los requisitos del Ãndice único para cualquier Ãndice único existente.
Si la colección que se mueve utiliza Atlas Search, sus Ãndices de búsqueda dejan de estar disponibles después de que
moveCollectionfinalice. Debe reconstruir manualmente los Ãndices de búsqueda.Si la colección que está moviendo está en fichero en Atlas en linea ficheros, los archivos de fichero en linea se marcan como
Orphaneduna vez que se completa la operación de movimiento. Puede crear otro fichero en linea para la misma base de datos, colección y campos que el fichero huérfano, siempre que no haya otro fichero para esa misma combinación en el estadoActive.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
moveCollectionesté en curso:No puede ejecutar las siguientes operaciones en el clúster mientras
moveCollectionestá en progreso:Las creaciones de Ãndices que ocurran mientras
moveCollectionesté en curso podrÃan fallar silenciosamente.No crear Ãndices mientras
moveCollectionesté en curso.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 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.
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 partición disponibles, ejecute sh.status(). Para más detalles, vea sh.status() Output.