Java 获取集合中的所有文档以及文档路径

Java 获取集合中的所有文档以及文档路径,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我想获取集合中的所有文档以及相应的文档路径。我可以使用类似的方法获取所有文档路径: firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) {

我想获取集合中的所有文档以及相应的文档路径。我可以使用类似的方法获取所有文档路径:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> list = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                list.add(document.getPath());
            }
            Log.d(TAG, list.toString());
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
firestore.collection(“root_collection”).get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
列表=新的ArrayList();
对于(QueryDocumentSnapshot文档:task.getResult()){
list.add(document.getPath());
}
Log.d(TAG,list.toString());
}否则{
Log.d(标记“获取文档时出错:”,task.getException());
}
}
});
然而,在此之后,我将不得不进行n次(集合中的文档数)读取来获取这些文档,这将比在一次读取中将它们作为集合获取花费更多

但是,在此之后,我必须进行n次(集合中的文档数)读取才能获取这些文档,这将比在一次读取中将它们作为集合获取花费更多

为了创建文档路径列表,需要创建“n”个请求。要实际获取所有相应文档的内容,需要根据新创建的列表执行另一个“n”请求。你为什么要那样做?如果需要获取文档及其路径,为什么不使用单个请求获取它们呢?因此,请检查以下方法:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> paths = new ArrayList<>();
            List<ModelClass> documents = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                paths.add(document.getPath());
                documents.add(document.toObject(ModelClass.class));
            }

            //Do what you need to do with the lists
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
firestore.collection(“root_collection”).get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
列表路径=新的ArrayList();
列表文档=新建ArrayList();
对于(QueryDocumentSnapshot文档:task.getResult()){
add(document.getPath());
添加(document.toObject(ModelClass.class));
}
//对列表执行您需要执行的操作
}否则{
Log.d(标记“获取文档时出错:”,task.getException());
}
}
});
否则,这将是对文档读取的浪费

但是,在此之后,我必须进行n次(集合中的文档数)读取才能获取这些文档,这将比在一次读取中将它们作为集合获取花费更多

为了创建文档路径列表,需要创建“n”个请求。要实际获取所有相应文档的内容,需要根据新创建的列表执行另一个“n”请求。你为什么要那样做?如果需要获取文档及其路径,为什么不使用单个请求获取它们呢?因此,请检查以下方法:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> paths = new ArrayList<>();
            List<ModelClass> documents = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                paths.add(document.getPath());
                documents.add(document.toObject(ModelClass.class));
            }

            //Do what you need to do with the lists
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
firestore.collection(“root_collection”).get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
列表路径=新的ArrayList();
列表文档=新建ArrayList();
对于(QueryDocumentSnapshot文档:task.getResult()){
add(document.getPath());
添加(document.toObject(ModelClass.class));
}
//对列表执行您需要执行的操作
}否则{
Log.d(标记“获取文档时出错:”,task.getException());
}
}
});

否则,这将是对文档读取的浪费。

当您像这样查询一个集合时,您实际上得到了该集合中所有文档的全部内容。无需再进行查询-所有内容都已包含在您收到的每个QueryDocumentSnapshot中。注意,子类。您可以简单地调用它的getter方法来了解文档的内容。例如,您可以调用
document.getData()
来获取整个文档内容的映射。

当您这样查询一个集合时,实际上是获取该集合中所有文档的全部内容。无需再进行查询-所有内容都已包含在您收到的每个QueryDocumentSnapshot中。注意,子类。您可以简单地调用它的getter方法来了解文档的内容。例如,您可以调用
document.getData()
来获取整个文档内容的映射。

当您查询这样的集合时,实际上是获取该集合中所有文档的内容。无需进行另一次查询-所有内容都已存在于您收到的每个QueryDocumentSnapshot中。您可以按照此操作,将.collection(“cities”)替换为根集合。当您查询这样的集合时,您实际上获得了该集合中所有文档的内容。无需再进行查询-所有内容都已包含在您收到的每个QueryDocumentSnapshot中。您可以按照此操作,用根集合替换.collection(“cities”)。嘿,fireball.1!我能帮你了解其他信息吗?如果你认为我的回答对你有帮助,请考虑接受它。✔️). 我真的很感激。谢谢!嘿,火球。1!我能帮你提供其他信息吗?如果你认为我的答案对你有帮助,请考虑接受它。✔️). 我真的很感激。谢谢!