我正在开发一个使用具有以下层次结构的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
}
}
});
实现此目标的最佳方法是什么?
答案 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);
}
}