У меня есть этот путь к подколлекции в Firebase Firestore: Team / TeamName / Meetings / First / Data . Интересно, есть ли способ получить документы в подколлекции данных на основе значений (полей) в первом документе (родительском документе).

Я пробовал это:

 db.collection("Team")
            .doc("TeamName")
            .collection('Meetings').where('0', '==', "some data")
            .where('3', '==', "doc data")
            .where('4', '==', "something in textfiel").collection("Data")

Но такой подход не работает.

0
radim.1 19 Окт 2020 в 20:00

1 ответ

Лучший ответ

Запросы Firestore могут рассматривать только поля документов непосредственно в коллекции или вложенной коллекции запроса. Нет никаких «объединений», которые объединяют данные между документами из нескольких коллекций.

То, что вы пытаетесь сделать, требует как минимум двух запросов. Во-первых, запрос на получение родительских документов от «Team»:

db
    .collection("Team")
    .where(/* your conditions on Teams documents here */)
    .get()

Затем для каждого соответствующего родительского документа вам потребуется больше запросов для документов в каждой подколлекции.

db
    .collection("Team")
    .doc(matchingDocId)
    .collection("Meetings")
    .where(/* Any filters on documents in Meetings */)
    .get()
1
Doug Stevenson 19 Окт 2020 в 17:22