Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mengira Dokumen dengan Cekap dalam Koleksi Firestore?

Bagaimanakah Saya Boleh Mengira Dokumen dengan Cekap dalam Koleksi Firestore?

Patricia Arquette
Patricia Arquetteasal
2024-11-23 08:44:16648semak imbas

How Can I Efficiently Count Documents in a Firestore Collection?

Mengira Dokumen dalam Koleksi Firestore

Edit: 20 Oktober 2022

Firestore sekarang menyediakan kaedah count() yang mengira dokumen dalam koleksi atau dokumen yang dikembalikan oleh pertanyaan tanpa membaca dokumen-dokumen tersebut. Ini menghapuskan keperluan untuk menyelenggara kaunter.

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 Julai 2021

Firebase memperkenalkan Sambungan Kaunter Teragih, yang menyediakan perkhidmatan kaunter berskala tinggi untuk tindakan berkelajuan tinggi seperti tontonan, sukaan atau perkongsian. Sambungan ini membenarkan operasi mengira melebihi had satu operasi tulis sesaat.

Jawapan Asal:

Mengambil Kiraan Dokumen Tanpa Kaedah getDocumentCount()

Memandangkan Firestore tidak mempunyai kaedah getDocumentCount() khusus, pendekatan alternatif diperlukan untuk mengira bilangan dokumen dalam koleksi.

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());
                }
            }
        });

Keterbatasan dan Alternatif

Pendekatan ini sesuai untuk set data kecil. Untuk set data yang lebih besar, pertimbangkan kaedah alternatif:

  • Cloud Functions Counter: Kemas kini pembilang dalam Cloud Functions apabila dokumen ditambah atau dipadamkan. Ini cekap tetapi terhad kepada kurang daripada satu operasi sesaat.
  • Kaunter Teragih: Laksanakan kaunter teragih seperti yang dijelaskan dalam dokumentasi Firebase. Pendekatan ini menampung operasi berkadar tinggi tetapi menimbulkan kos tambahan.
  • Pangkalan Data Masa Nyata Firebase: Simpan kiraan dalam Pangkalan Data Masa Nyata Firebase untuk kemas kini hampir masa nyata dan keberkesanan kos.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Dokumen dengan Cekap dalam Koleksi Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn