OR 演算子を使用した Firestore での柔軟なクエリ
Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。
このたび、OR 演算子を使用して Firestore をクエリできるようになりました。アプリケーションでは、1 つ以上のフィールドを 2 つ以上の値と比較し、そのうち少なくとも 1 つの値と一致するドキュメントを選択する必要がある場合がよくあります。これは、複数の値を同じフィールドと比較するために使用される IN 演算子の拡張です。
たとえば、猫と犬についての情報を検索している場合、次のように OR 演算子を使用して 2 つの検索用語を 1 つのクエリにまとめることができます。
‘cats = black OR dogs = brown’
このクエリによって返される結果には、黒い猫と茶色の犬に関する情報が含まれます。
Firestore は現在、サーバー SDK とクライアント SDK を介した OR クエリをサポートしています。これは、ストリーミングとオフラインの互換性を備えています。
ユースケース
OR 演算子がサポートされたことにより、Firestore を使用して、既存のクエリ コンストラクトによって 1 つ以上のフィールドを 2 つ以上の値でフィルタするアプリケーションを構築できるようになりました。
例
従業員管理ポータルを Firestore 上で実行していて、役職、組織、勤務地、在職期間などの複数の条件でフィルタする機能を必要としているとします。この機能を、OR を使用して簡単に実現できるようになりました。
次に、特定の従業員の過去 2 年間の業績評価または評定が 4 より高かったときの業績評価をクエリしたいとします。
このクエリは、次のように複数の OR 演算子をネストして実現できます。
ネストされた OR 演算子は、複数の条件をチェックする必要があるときに役立ちますが、クエリ文がわかりにくくなる可能性があります。使用する際は慎重に、必要な場合に限って使用するようにしてください。
OR 演算子はすべての既存のクエリ コンストラクトでも使用できます。たとえば、コレクション グループ全体をクエリしたり、COUNT() などの既存の演算子と組み合わせたりすることができます。
Landmarks というコレクション グループの例を見てみましょう。OR 演算子を使用してグループ内のコレクションをフィルタできます。
便利な演算子である COUNT() を次のように OR 演算子と組み合わせて、データを簡単にクエリできるようになりました。
IN と array-contains-any で拡張される制限
さらに Firestore では、複数の IN 演算子を使用したり、IN 演算子または array-contains-any 演算子を使用して最大 30 個の句を結合したりできます。
例:
注: Not_IN 演算子は OR 演算子と組み合わせることはできません。また、結合できる句は 10 個までです。
次のステップ
Firestore を使用して、アプリケーションを迅速かつ簡単に構築しましょう。
詳細については、公式ドキュメントをご覧ください。
- ソフトウェア エンジニア Ehsan Nasiri