Я хочу получить все документы из Продуктов, название категории которых равно "Сода".
Поскольку у вас нет всех данных в одном документе, вам нужно запроситьВаша база данных дважды.Один раз, чтобы получить идентификатор категории, которая в данном случае является «Сода», а затем на основе этого идентификатора получить соответствующие продукты.Это связано с тем, что Firestore не поддерживает запросы из нескольких коллекций.В одном запросе могут использоваться только свойства документов в одной коллекции.
Зачем запрашивать базу данных дважды, что обходится дорого, когда вы можете запросить один раз и получить нужные документы.Для этого вам нужно внести небольшие изменения в схему базы данных.Поскольку один продукт может принадлежать нескольким категориям, ваша новая схема должна выглядеть следующим образом:
Firestore-root
|
--- products (collection)
|
--- productId (document)
|
--- productName: "Soda Water"
|
--- category: ["Soda", "Other Category"]
|
--- //Other properties
Чтобы получить все документы, относящиеся к категории Soda
, используйте следующие строки кода:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference productsRef = rootRef.collection("products");
Query query = productsRef.whereArrayContains("category", "Soda");
Редактировать: Вы также можете хранить ссылки вместо только идентификаторов, но для этого, пожалуйста, смотрите мой ответ из этого сообщения .