Запрос документов, содержащих вложенную коллекцию - PullRequest
0 голосов
/ 28 июня 2018

Есть ли способ сделать запрос для всех документов, содержащих конкретную подколлекцию (или, альтернативно, любую подколлекцию вообще) в одном запросе?

Этот ответ: Можно ли проверить, существует ли коллекция или подколлекция? предлагает использовать длину документа. Можно ли сделать эту проверку в рамках одного запроса?

В идеале было бы возможно что-то подобное:

db.collection("stuff")
            .whereEqualTo("fu", true)
            .containing("subcollection");

Контекст: я использую FirestoreRecyclerAdapter, чтобы заполнить RecyclerView этим запросом. Вот почему я не могу на локальную фильтрацию. Мне известно, что введение поля индикатора в документ решит проблему, но в идеале хотелось бы избежать этого.

1 Ответ

0 голосов
/ 28 июня 2018

Я не думаю, что такой запрос возможен.

Лучшее, что я могу придумать, - это сохранить поле в родительском документе, которое помечается, когда вы добавляете что-то во вложенную коллекцию.

db.collection("stuff")
  .whereEqualTo("fu", true)
  .whereEqualTo("somethingAddedToSubcollection", true);

По общему признанию, не идеал, поскольку каждая запись во вложенную коллекцию теперь требовала бы второй записи в самом документе, поэтому я надеюсь, что кто-то другой знает лучшее решение.

...