ホームページ > Java > &#&チュートリアル > 「count()」メソッドを使用して Firestore ドキュメントを効率的にカウントするにはどうすればよいですか?

「count()」メソッドを使用して Firestore ドキュメントを効率的にカウントするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-25 22:25:20
オリジナル
310 人が閲覧しました

How to Efficiently Count Firestore Documents Using the `count()` Method?

Firestore の count() メソッドを使用してコレクション内のドキュメントを数える方法

Firestore には、getDocumentCount() のような明示的なメソッドはありません。コレクション内のドキュメントの数を数えます。ただし、カウント操作を効率化するために、count() と呼ばれる新しいメソッドが導入されました。

count() メソッドの使用

import com.google.cloud.firestore.Query;
import com.google.cloud.firestore.QueryDocumentSnapshot;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

CompletableFuture<Long> future = new CompletableFuture<>();
Query query = db.collection("Posts");
query.get().addCallback(
    queryDocumentSnapshots -> {
      Long count = 0L;
      for (QueryDocumentSnapshot document : queryDocumentSnapshots.getDocuments()) {
        count++;
      }
      future.complete(count);
    },
    throwable -> future.complete(throwable)
);
// Retrieve the count asynchronously
try {
  Long count = future.get();
  System.out.println("Number of posts: " + count);
} catch (InterruptedException | ExecutionException e) {
  System.out.println("Error counting posts: " + e.getMessage());
}
ログイン後にコピー

このメソッドの利点カウント()メソッド

  • スケーラブル: count() メソッドは集計を実行するため、手動でカウントする必要がなくなります。これは、大規模なコレクションの場合に特に有益です。
  • 効率的: 実際のドキュメントではなくインデックス エントリのみを読み取るため、データが削減されます。 fetching.
  • 一貫性: 返されたカウントは、クエリ時のコレクションの状態を参照しているため正確です。

代替ソリューション

  • クラウド機能の使用カウンターを使用: Cloud Functions を使用すると、新しいドキュメントが作成または削除されるたびに、別のドキュメントに保存されているカウンターを増分できます。このアプローチでは高速なカウントが可能ですが、書き込み時のベストエフォート制限の対象となります。
  • クライアント側カウンターの維持: トランザクションを使用して、ローカル カウンターを更新できます。クライアント側でドキュメントを追加または削除する際に、正確性を確保します。ただし、追加のロジックと慎重な実装が必要です。
  • ポーリング: コレクションを定期的にクエリして結果をカウントすると、ドキュメント数の推定値が得られますが、遅延が発生し、読み取り操作が増加する可能性があります。 .

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

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