Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

409
Vistas
¿Cómo migrar documentos en Firestore?

Necesito obtener una serie de documentos de una colección y migrar estos documentos a otra colección.

Así que creo una consulta para obtener todos los documentos de la primera colección:

 const orderQuery = db.collection("FIRST_COLLECTION").where("status", "==", "ACTIVE").get(); const orders: Order[] = mapToObject<Order>(orderQuery); //here I map query from firestore to objects

e iterar sobre esta matriz y add a otra colección:

 const secondCollectionQuery = db.collection("SECOND_COLLECTION").doc("ID").collection("THIRD_COLLECTION"); for await (const order from orders) { secondCollectionQuery.add(order); }

¿Hay una mejor manera de migrar documentos de una colección a otra con firebase? ¡Gracias por cualquier ayuda!

PD. También quiero eliminar el documento de la colección cuando se migre a otra colección, no quiero tener un duplicado

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Existe una forma mejor de migrar documentos de una colección a otra con Firestore? PD. También quiero eliminar el documento de la colección.

La única forma de mover un documento de una colección a otra colección es la forma que ha descrito en su pregunta, es decir, imitando un "copiar y pegar" con la siguiente secuencia:

Cree una copia del documento de origen en la colección de destino, es decir, léalo de la colección de origen, obtenga los campos del documento y cree un nuevo documento en la colección de destino con estos campos.

Si desea hacer un " cortar y pegar" (también eliminando los documentos de la colección de origen), deberá eliminar estos documentos de la colección de origen después de haber completado la secuencia de copiar/pegar.


Tenga en cuenta que Firestore ofrece la posibilidad de exportar e importar documentos utilizando el servicio de exportación e importación administrado y Cloud Storage , pero no puede exportar documentos de una colección e importarlos en otra colección.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede insertar esos add() en una matriz y luego usar Promise.all() para ejecutarlos juntos (o usar escrituras por lotes y migrarlos en lotes de 500). Además, la promesa devuelta por la primera consulta no parece manejarse correctamente. Intente ejecutar la siguiente función asíncrona.

 async function migrateDocs() { const oldColRef = db.collection("FIRST_COLLECTION") const newColRef = db.collection("SECOND_COLLECTION") const orderQuery = await oldColRef.where("status", "==", "ACTIVE").limit(500).get(); const addBatch = db.batch(); const delBatch = db.batch(); orderQuery.docs.forEach(doc => { addBatch.set(newColRef.doc(doc.id), doc.data()) delBatch.delete(oldColRef.doc(doc.id)) }) // add docs in new collection await addBatch.commit(); // remove same docs from old collection await delbatch.commit(); console.log("500 docs migrated") }

Dado que una escritura por lotes puede contener solo 500 operaciones, tenemos ese .limit(500) , por lo que solo recuperamos 500 documentos. También puede leer todos los documentos y luego crear lotes de 500 (para que no tenga que ejecutar lo mismo una y otra vez manualmente) como se muestra arriba o ejecutar todas las promesas individualmente (preferiría escrituras por lotes).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda