Maison  >  Article  >  Java  >  Comment puis-je compter efficacement les documents dans une collection Firestore ?

Comment puis-je compter efficacement les documents dans une collection Firestore ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-23 08:44:16667parcourir

How Can I Efficiently Count Documents in a Firestore Collection?

Comptage des documents dans une collection Firestore

Edit : 20 octobre 2022

Firestore maintenant fournit une méthode count() qui compte les documents d'une collection ou les documents renvoyés par une requête sans lire les documents. Cela élimine le besoin de gérer un compteur.

Query query = db.collection("Posts").orderBy("createdAt");
Task<Long> task = query.count();
task.addOnCompleteListener(new OnCompleteListener<Long>() {
    @Override
    public void onComplete(@NonNull Task<Long> task) {
        long count = task.getResult();
    }
});

Edit : 10 juillet 2021

Firebase présente l'extension de compteur distribué, qui fournit un service de compteur hautement évolutif. pour les actions à grande vitesse telles que les vues, les likes ou les partages. Cette extension permet aux opérations de comptage de dépasser la limitation d'une opération d'écriture par seconde.

Réponse originale :

Récupération du nombre de documents sans méthode getDocumentCount()

Étant donné que Firestore ne dispose pas d'une méthode getDocumentCount() dédiée, des approches alternatives sont nécessaires pour compter le nombre de documents dans un collection.

db.collection("Posts").get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    int count = task.getResult().size();
                    Log.d(" TAG", count + "" );
                } else {
                    Log.d(TAG, "Error getting documents: ", task.getException());
                }
            }
        });

Limitations et alternatives

Cette approche convient aux petits ensembles de données. Pour les ensembles de données plus volumineux, envisagez des méthodes alternatives :

  • Compteur Cloud Functions : Mettez à jour un compteur dans Cloud Functions chaque fois qu'un document est ajouté ou supprimé. Ceci est efficace mais limité à moins d'une opération par seconde.
  • Compteurs distribués : Implémentez des compteurs distribués comme expliqué dans la documentation Firebase. Cette approche permet des opérations à haut débit mais entraîne des coûts supplémentaires.
  • Base de données en temps réel Firebase : Stockez le décompte dans la base de données en temps réel Firebase pour des mises à jour en temps quasi réel et une rentabilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn