Как ограничить количество сборов в запросе Firestore? - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь создать запрос, чтобы скопировать коллекции в документе по другому пути в БД Firestore.

Дело в том, что мой документ содержит 60 000 коллекций внутри - поэтому запрос, который я выполняюзанимает вечно (если это удалось).

Предполагая, что это запрос, который я выполняю сейчас:

firestoreCol.doc('docName')
.listCollections()
  .then(cols => { ... });

Есть ли способ как-то разделить запрос, чтобы сделать его более эффективным?

1 Ответ

2 голосов
/ 03 октября 2019

Нет переключателя, который ускоряет поиск данных. Единственное, что вы можете сделать, чтобы получить результат быстрее, это использовать более быстрое соединение или получить меньше данных.

Например: довольно редко приходится обрабатывать данные из 60 000 коллекций. Фактически, это своего рода анти-паттерн для выполнения таких широких операций чтения из большинства баз данных NoSQL. Более распространенным является хранение агрегированных данных в базе данных и их обновление при каждой операции записи. Таким образом, вы читаете только небольшое подмножество данных для каждого обновления.

Если вам необходимо регулярно выполнять пользовательские агрегации по всем данным, Cloud Firestore может не подходить для ваших требований. В этом случае рассмотрите возможность использования решения, в большей степени ориентированного на динамические запросы, такого как BigQuery.

...