每个Notification ID
集合仅包含一个文档,我想对ToseefShop1
中的所有集合进行迭代,并获取各自的文档名称和字段数据。
数据模型:
dbRef.collection("Shop Notifications")
.document("ToseefShop1")
.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot querySnapshot) {
// Dont know what to do
}
});
这不是重复的问题。另一个问题(有人建议与之重复)是关于javascript的,而答案是关于Node.js的。没有接受答案。实际上,我在Firestore Java中找不到getcollections()方法。
答案 0 :(得分:4)
Firestore中无法查询文档以获取其下的子集合。为了获得所需的文档名称和字段数据,首先需要具有子集合的名称,然后在引用中使用它们。如果您只有2个子集合,建议您使用以下代码:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
Query firstQuery = rootRef
.collection("Shop Notifications")
.document("ToseefShop1")
.collection("Notification ID:0");
Query secondQuery = rootRef
.collection("Shop Notifications")
.document("ToseefShop1")
.collection("Notification ID:1");
Task firstTask = firstQuery.get();
Task secondTask = secondQuery.get();
Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> list) {
//Do what you need to do with your list
}
});
答案 1 :(得分:2)
(使用Android / iOS / JavaScript SDK)无法获取文档的(子)集合列表。您必须知道集合的标识符才能访问它们。
从问题附带的注释中,我了解到每个文档的子集合标识符都将有所不同(可能还有它们的编号)。因此,一种解决方法可能是在父文档中维护一个子集合的标识符列表(例如,作为类型数组的字段)。
答案 2 :(得分:0)
您可以使用Cloud Function列出给定文档的所有子集合。
Read Approach #2: Use a Cloud Function
在页面中间。
方法1:将列表保存在父文档的专用字段中
与此处的其他答案非常相似,但您可能希望 second 方法比 first 方法要多得多,因为第二种方法效率更高,生产率更高,更便宜,并且您的数据库比第一种方法更容易维护。