Могу ли я запрашивать и получать значения полей документов в подколлекции в Cloud Firestore? - PullRequest
1 голос
/ 25 апреля 2020

Можно ли запросить и удалить значения полей документов в подколлекции? Возьмем, к примеру, следующее:

States [Collection]
    State 1 [Document]
        Counties [Collection]
           County 1 [Document]
               British Population = 100 [Field]

           County 2 [Document]
               British Population = 200 [Field]

    State 2 [Document]
        Counties [Collection]

           County 1 [Document]
               British Population = 150 [Field]

Как запросить документы у Briti sh Population и получить номер population?

1 Ответ

1 голос
/ 25 апреля 2020

Поскольку имя подколлекции Counties одинаково во всех State документах, для получения значения свойства "Briti sh Population" требуется запрос группы сбора Firestore, Однако это не будет работать, если в вашем документе Country нет другого свойства, которое может помочь вам создать этот запрос. В коде должно выглядеть так:

db.collectionGroup("Counties").whereEqualTo("nationality", "British").get()
        .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                // ...
            }
        });

Это переводится так. Эй, Firestore, дай мне все Country документов, которые существуют во всех Countries коллекциях или вложенных коллекциях, где "национальность" - это "Briti sh". Итак, как вы можете видеть, я добавил новое свойство с именем nationality и добавил соответствующее значение как «Briti sh». Поскольку все документы содержат такое свойство, все документы будут возвращены.

Кроме того, свойство "Briti sh Population" также можно изменить на "население". Теперь внутри onSuccess() вы можете запросить объект QuerySnapshot и получить значение для свойства population.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...