Google Firestore - estruturando dados ordenados profundamente aninhados

Estou tentando descobrir como estruturar meus dados para meu aplicativo de exercícios com o Cloud Firestore. O modelo de dados é o seguinte:

O aplicativo tem muitos conjuntos de exercíciosCada conjunto de exercícios possui uma lista ordenada de exercíciosCada exercício possui uma lista ordenada de partes do exercícioCada parte do exercício possui uma lista ordenada de instruçõesCada instrução possui várias propriedades (por exemplo, texto, imageUrl etc.)

Meu primeiro pensamento foi simplesmente armazenar os dados em subcoleções subseqüentes com chaves numeradas. No entanto, preciso poder consultar todos os dados de um conjunto de exercícios (incluindo todos os exercícios, partes e instruções). Como as subcoleções não são incluídas nos resultados de uma consulta de documento, armazenar todos os dados como subcoleções subseqüentes exigiria que eu fizesse muitas consultas para recuperar todos os dados para um único conjunto de exercícios.

Eu também poderia armazenar cada um dos itens acima como uma coleção de nível superior separada e manter uma referência a cada um dos tipos pai (por exemplo, uma instrução teria um setId, exerciseId e partId). Eu poderia fazer uma consulta para cada um dos exercícios, partes e instruções, filtrando em setId. No entanto, isso ainda requer várias consultas e também exigiria mapeamento em cada nível para reconstruir os dados no cliente.

Por fim, como não prevejo a necessidade de consultar além do nível do exercício, eu poderia armazenar todas as partes e instruções no documento do exercício em objetos / matrizes aninhados. Isso me cheira um pouco, e quando tentei adicionar vários níveis de dados aninhados dessa maneira por meio do console da web, o firestore gerou um erro.

Qualquer orientação será imensamente apreciada.

questionAnswers(2)

yourAnswerToTheQuestion