Выборочное копирование данных из одной коллекции Firestore в другую

У меня есть коллекция Firestore с дополнительными вложенными коллекциями и полями под ней. Так выглядит конструкция (очень плохой пример для пожарного склада)

(collection) company
   - (field) client_list 
   - (field) revenue 
   - subcollection1
   - subcollection2

Я хочу скопировать некоторые документы из нее в другую коллекцию (copy_of_company), если в ее списке есть определенные клиенты. В настоящее время я написал код для копирования отдельных полей внутри документов, но не могу понять, как копировать вложенные коллекции.

Я буду делать эту операцию нечасто, может, раз в месяц. Как мне сделать это глубокое, но выборочное копирование?


person emotionull    schedule 09.01.2020    source источник


Ответы (1)


В настоящее время для этого не существует одно- или двухстрочного решения.

query = (comapny_ref.where(u"client_list", u'array_contains', u'ABCorp'))
companies = [c for c in query.get()]
for company in companies:
  copy_of_comapny_ref.document(company.id).set(company._data)
  subcollection1_ref = comapny_ref.document(company.id).collection(u'subcollection1').get()
  for subcollection1 in subcollection1_ref:
    copy_of_comapny_ref.document(conv.id).collection(u'subcollection1').\
                        document(subcollection1.id).set(subcollection1._data)
person emotionull    schedule 12.01.2020