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

296
Vistas
¿Cómo mover una colección/datos existentes en Firestore a una subcolección?

En mi base de datos de Firestore, tengo el siguiente esquema de base de datos con documentos

 root | |---transactions/...

Quiero mover todas las transacciones a una nueva subcolección como:

 root | |---users/user/transactions/...

¿Cómo logro esto?

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

0

Después de probar algunos enfoques (ver más abajo), esto es lo que funcionó para mí:

1. Migre los datos con una función personalizada utilizando @angular/fire SDK:

 // firebase.service.ts import { Injectable } from '@angular/core'; import { AngularFirestore } from '@angular/fire/firestore'; import { first, map } from 'rxjs/operators'; @Injectable({ providedIn: 'root', }) export class FirebaseService { fromCollection = '<name-of-collection>'; toCollection = '<other-root-level-collection>/<document-id>/<subcollection>'; constructor(private firestore: AngularFirestore) {} migrateTransactions() { this.getAllDocuments<YourType>(this.fromCollection).subscribe((documents) => { documents.forEach(async (document) => { await this.createDocument(this.toCollection, document); }); }); } getAllDocuments<T>(path: string) { return this.firestore .collection(path) .get() .pipe( first(), map((collection) => collection.docs.map((doc) => doc.data() as T)) ); } createDocument(path: string, document: unknown) { return this.firestore.collection(path).add(document); } }

Nota: Esto solo AGREGA todos los documentos desde el origen a la colección de destino; NO elimina los documentos originales ni sobrescribe ningún documento existente, por lo que es muy seguro de usar. Luego, puede eliminar la colección de origen en la consola de Firebase.

Recuerde que puede concatenar colecciones y documentos anidados y pasarlos como argumento a AngularFirestore.collection(path) (como se ve en la propiedad toCollection ). Esto facilita el recorrido de colecciones anidadas. Si esto es posible en otros SDK, no lo sé.

2. Migrar usando firestore-migrator por Jeff Delaney :

Esto no funcionó para mí ya que la biblioteca falló al convertir las marcas de tiempo de firebase. Si no tiene tipos de datos complejos en su esquema, probablemente funcionará. La biblioteca en sí es una gran utilidad y se puede hacer que funcione localmente si está dispuesto a jugar un poco.

3. Migre mediante el servicio de exportación e importación administrado de Cloud Firestore :

Esto solo funciona para copias de seguridad completas de la base de datos completa o de una colección de nivel raíz. Así que esto podría no ser lo que estás buscando.

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