Выборочное копирование данных из одной коллекции Firestore в другую - PullRequest
3 голосов
/ 09 января 2020

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

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

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

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

1 Ответ

1 голос
/ 12 января 2020

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

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)
...