Firestore-获取子集合的父文档

时间:2019-05-20 10:54:42

标签: android firebase google-cloud-firestore

Screenshot of my database as requested我正在开发一个使用具有以下层次结构的Firestore数据库的应用程序: parent_collection:                   parent_document:                                   子集合:                                                 child_document {                                                      字符串名称} 使用collectionGroup,我已经能够查询子集合中具有特定名称的文档,但是我不知道如何获取parent_document

 db.collectionGroup("subcollection").whereEqualTo("name", searchText).get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if(task.isSuccessful()){
                          //here I want to get the parent id of all results
                        }
                    }
                });

实现此目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

QuerySnapshot指向多个QueryDocumentSnapshot实例。

通过QueryDocumentSnapshot,您可以通过以下方式获取其来源:

snapshot.getRef().getParent()

然后父级DocumentReference是:

snapshot.getRef().getParent().getParent()

因此要获取父文档的子集,请执行以下操作:

snapshot.getRef().getParent().getParent().collection("name_of_subcollection")

是的,我同意...这本来应该更具可读性。 :)

答案 1 :(得分:0)

您可以获取这样的集合文档:

if(task.isSuccessful()) {
        List<DocumentSnapshot> documents = task.getResult().getDocuments();
        for(DocumentSnapshot documentSnapshot : documents) {
            documentSnapshot.getId();
            // or any field documentSnapshot.get(field);
        }
}
相关问题