[英]How to count the number of documents filtered by a query in Cloud Firestore
我试图获取集合中的文档数量,但通过查询过滤。
我想知道我的“Opponent_level”比我“最差”的游戏数量。 还有:我战胜“最差”对手的次数。
我需要这个查询:
colRef= db
.collection("users").document(currentUID)
.collection("gamesession").document(currentGameSession)
.collection("games");
Query query_opp_win = colRef.whereEqualTo("OpponentLvl", "Worst").whereEqualTo("Result", "Win");
Query query_opp_worst = colRef.whereEqualTo("OpponentLvl", "Worst");
我知道如何检索游戏的#数量,但不知道如何应用查询来获取数量:(
我阅读了有关querySnapshot.size()的信息,但我还不明白如何将其应用于我的代码或我必须更改的内容。
colRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
int counter = 0;
for (DocumentSnapshot documentSnapshot : task.getResult()){
counter++;
}
Toast.makeText(Home.this, "Number: "+counter, Toast.LENGTH_SHORT).show();
}
}
});
您必须实际执行您在第一段代码中定义的查询,然后计算它的结果,就像您在第二段代码中显示的那样。 正如您已经展示的那样,如果不使用get()
执行查询,您根本无法计算任何东西。
query_opp_win.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
int counter = 0;
for (DocumentSnapshot documentSnapshot : task.getResult()){
counter++;
}
Toast.makeText(Home.this, "Number: "+counter, Toast.LENGTH_SHORT).show();
}
}
});
看看我是如何使用query_opp_win
并将其替换为您提供的代码的。
计算集合中的文档数和计算过滤查询中的文档数之间几乎没有区别。 他们本质上都只是进行查询。 CollectionReference 本身就是一个没有过滤器的查询 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.