Einführung
In Firebase Firestore gibt es keine direkte Methode dafür Ermitteln der Dokumentenanzahl einer Sammlung. Mit dem jüngsten Update und der Einführung neuer Funktionen in Firestore gibt es jedoch mehrere Ansätze, dies zu erreichen.
Neue count()-Methode
Stand: 20. Oktober 2022 bietet Firestore eine neue count()-Methode an, mit der Sie Dokumente zählen können, ohne deren tatsächlichen Inhalt zu lesen. Es gibt eine Abfrage zurück, die die mit der Abfrage übereinstimmenden Dokumente zählt. Bei Aggregationsabfragen wie count() wird Ihnen ein gelesenes Dokument für jeden Stapel von bis zu 1000 Indexeinträgen in Rechnung gestellt, die mit der Abfrage übereinstimmen.
Verteilter Zähler
Ein Am 10. Juli 2021 führte Firebase die Erweiterung „Distributed Counter“ ein. Es bietet einen hoch skalierbaren Zählerdienst, der auf Anwendungen zugeschnitten ist, die schnelle Aktionen wie Aufrufe, Likes oder Shares verfolgen. Mit dieser Erweiterung können Sie die maximale Grenze von einem Schreibvorgang pro Sekunde überwinden.
Codebeispiele für die Dokumentenzählung
1. Verwendung der count()-Methode
Query countQuery = db.collection("Posts") .whereEqualTo("status", "published"); Task<QuerySnapshot> task = countQuery.get(); task.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()); } } });
2. Verwendung des Legacy-Ansatzes
db.collection("Posts") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { int count = 0; for (DocumentSnapshot document : task.getResult()) { count++; } Log.d("TAG", count + ""); } else { Log.d(TAG, "Error getting documents: ", task.getException()); } } });
Weitere Überlegungen
Einschränkungen des Legacy-Ansatzes:
Verwendung des Legacy-Ansatzes Funktioniert gut für kleine Datensätze, kann jedoch aufgrund der Leseoperation für jeden bei großen Datensätzen ineffizient sein Dokument.
Genauigkeit des verteilten Zählers:
Bitte beachten Sie, dass es sich bei Cloud-Funktionen um Best-Effort-Funktionen zur Schreibzeit handelt, was bedeutet, dass es zu einer leichten Verzögerung bei der Aktualisierung des Zählers kommen kann. und es ist möglicherweise nicht sofort genau, insbesondere wenn der Datensatz groß ist oder viele Schreibvorgänge stattfinden laden.
Fazit
Die neue count()-Methode bietet eine bequeme und leistungsstarke Möglichkeit, Dokumente in Firestore-Sammlungen zu zählen. Wenn Sie einen Zähler mit sofortigen Updates und Skalierbarkeit benötigen, sollten Sie die Verwendung der Distributed Counter-Erweiterung in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie kann man Dokumente in einer Firestore-Sammlung effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!