Возможная схема для сценария использования вашего приложения:
Firestore-root
|
--- merchants (collection)
| |
| --- merchantId (document)
| |
| --- //merchant details
|
--- orders (collection)
|
--- orderId (document)
|
--- merchantId: "LongMerchantId"
|
--- products (array)
|
--- 0
| |
| --- productName: "Bacon"
| |
| --- productPrice: 5
|
--- 1
|
--- productName: "Eggs"
|
--- productPrice: 12
Используя эту структуру, вы можете легко запросить все заказы одного продавца:
db.collection("orders").whereEqualTo("merchantId", "LongMerchantId");
Чтобы получить все товары определенного заказа, просто используйте следующую ссылку:
DocumentReference orderIdRef = db.collection("orders").document("orderId");
Теперь вы можете присоединить слушателя к этой ссылке, получить документ и использовать список товаров. Вы не указали используемый язык программирования, поэтому я привел вам примеры в Android. Преобразовать их на языке, который вы используете, очень просто. Для Android, чтобы получить список пользовательских объектов, пожалуйста, проверьте следующую статью:
Еще один момент, на который следует обратить внимание: приведенное выше решение будет работать только , если вы уверены, что продукты в заказе уместятся в 1 МБ (1 048 576 байт). . Если вы не уверены, вместо массива вы должны использовать вложенную коллекцию. Если вы хотите быть на 100% безопасным, вы всегда можете проверить максимальную квоту, используя FirestoreDocument- Android library .