У меня есть 3 коллекции высшего уровня
Это распространенный способ структурирования базы данных Cloud Firestore.
может кто-нибудь объяснить, как сделать запрос базы данных для всех добровольцев в рамках каждого мероприятия с этим дизайном.
Возможная структура базы данных может быть:
Firestore-root
|
--- volunteers (collection)
| |
| --- volunteerId (document)
| |
| --- //Volunteer properties
| |
| --- eventIds: ["generatedEventId", "generatedEventId"]
|
--- events (collection)
|
--- eventId (document)
|
--- //Event properties
Как видите, я добавил eventId
в качестве значения в массиве eventIds
, поскольку volunteer
может участвовать более чем в одном событии. Чтобы получить всех добровольцев в рамках каждого мероприятия, вы можете использовать следующий запрос:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference volunteersRef = rootRef.collection("volunteers");
Query query = volunteersRef.whereArrayContains("eventIds", "generatedEventId");
Где generatedEventId
- это идентификатор вашего мероприятия, в котором участвуют волонтеры.
Поскольку вы не выбрали тег для платформы, я написал вышеупомянутые строки кода в Android, но его можно просто написать и для других языков программирования.