ホームページ > Java > &#&チュートリアル > Firestore コレクション内のドキュメントを効率的にカウントするにはどうすればよいですか?

Firestore コレクション内のドキュメントを効率的にカウントするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-23 08:44:16
オリジナル
714 人が閲覧しました

How Can I Efficiently Count Documents in a Firestore Collection?

Firestore コレクション内のドキュメントのカウント

編集: 2022 年 10 月 20 日

現在の Firestoreコレクション内のドキュメント、またはメソッドによって返されたドキュメントを数える count() メソッドを提供します。文書を読まずに質問します。これにより、カウンターを維持する必要がなくなります。

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();
    }
});
ログイン後にコピー

編集: 2021 年 7 月 10 日

Firebase に分散カウンター拡張機能が導入され、拡張性の高いカウンター サービスが提供されます。ビュー、いいね、シェアなどの高速アクションに対応します。この拡張機能を使用すると、1 秒あたり 1 回の書き込み操作の制限を超えるカウント操作が可能になります。

元の回答:

getDocumentCount() メソッドを使用しないドキュメント数の取得

Firestore には専用の getDocumentCount() メソッドがないため、カウントするには代替アプローチが必要ですコレクション内のドキュメントの数。

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());
                }
            }
        });
ログイン後にコピー

制限事項と代替手段

このアプローチは、小規模なデータセットに適しています。より大きなデータセットの場合は、代替方法を検討してください:

  • Cloud Functions Counter: ドキュメントが追加または削除されるたびに、Cloud Functions のカウンターを更新します。これは効率的ですが、1 秒あたり 1 操作未満に制限されます。
  • 分散カウンター: Firebase ドキュメントで説明されているように、分散カウンターを実装します。このアプローチは高レートの操作に対応しますが、追加コストが発生します。
  • Firebase Realtime Database: ほぼリアルタイムの更新とコスト効率を高めるために、カウントを Firebase Realtime Database に保存します。

以上がFirestore コレクション内のドキュメントを効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート