答案 0 :(得分:1)
尝试以下操作:
Firestore.instance.collection("books").where("author", isEqualTo: "Arumugam").getDocuments().then((value) {
value.documents.forEach((result) {
var id = result.documentID;
Firestore.instance.collection("books").document(id).collection("enquiries").getDocuments().then((querySnapshot) {
querySnapshot.documents.forEach((result) {
print(result.data);
});
首先,您需要检索books
集合下的ID,然后才能进行查询,例如where("author", isEqualTo: "Arumugam")
。检索id
后,您可以进行查询以检索集合enquiries
答案 1 :(得分:1)
我假设所有子集合都具有相同的名称,即enquiries
。然后,您可以执行以下操作:
docId
文档中添加包含文档ID的字段enquiries
。docId
值(Firestore.instance.collectionGroup("enquiries").where("docId", isEqualTo: "ykXB...").getDocuments()
)的所有文档。DocumentReference
调用两次parent()
方法(first time您将得到CollectionReference
和{{3 }},您将获得上级文档的DocumentReference
。答案 2 :(得分:0)
例如,如果存在“查询”子集合下的带框文件,那么我需要“书”集合中的带框文件ID。
您不可能一次完成该操作。
我不知道如何向后获取父文档ID。
您可能一直在想,Firestore中没有回头路可走了。在Firebase实时数据库中,我们有一个名为getParent()
的方法,该方法完全可以满足您的要求,但在Firestore中,我们不需要。
Firestore中的查询很浅,这意味着它仅从运行查询的集合中获取项目。 Firestore不一次性支持跨不同集合的查询。单个查询只能使用单个集合中的文档属性。因此,解决问题的方法是执行两个get()
调用。第一个方法是检查该文档在enquiries
子集合中是否存在,如果存在,只需创建另一个get()
调用即可从books
集合中获取该文档。