簡體   English   中英

如何計算 Cloud Firestore 中查詢過濾的文檔數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM