Cloud Firestore: クエリを使用して大文字と小文字を区別しない並べ替えを実現する
Cloud Firestore では、OrderBy() 関数を使用したデータの並べ替えでは大文字と小文字が区別されます、提供された例で示されているように、大文字と小文字に基づいて文字列の順序が決まります。ただし、大文字と小文字を区別しない並べ替えが優先されるシナリオもあります。
大文字と小文字を区別しない並べ替えの制限事項
Firestore は、大文字と小文字を区別しない並べ替えに対する直接的なソリューションを提供しません。クエリを使用して。これは、並べ替えとフィルター操作がデータベースによって内部的に実行され、保存されている実際のデータに対して操作されるためです。
回避策: 重複フィールドの保存
推奨されるアプローチ大文字と小文字を区別しない並べ替えを実現するには、データを 2 回保存します:
たとえば、次のような "myData" という名前のフィールドを考えてみましょう。値は「AAA」と「aaa」です。大文字と小文字を区別しない並べ替えを実現するには、追加フィールド「myData_insensitive」を作成し、両方の値を「AAA」として保存します。
データのクエリと表示
クエリと並べ替えるには、「myData_insensitive」フィールドを指定します。これにより、大文字と小文字を区別しないバージョンのデータに基づいて順序が決定されます。ただし、結果を表示するときは、データの正確性を維持するために元の「myData」フィールドを参照してください。
Unicode に関する考慮事項
大文字と小文字を区別しない並べ替えを実装する場合は、大文字と小文字の正規化が不可欠です。 Unicode 文字を正しく処理するため。これには、文字を正規化された形式に変換し、アクセントや特殊文字を含む文字列のソートの一貫性を確保することが含まれます。正規化には、大文字と小文字の折りたたみなど、さまざまなアプローチを使用できます。
実装例
次の JavaScript コードは、重複フィールドを使用して大文字と小文字を区別しない並べ替えを実現する方法を示しています。
<code class="javascript">firestore.collection("cities").where("myData_insensitive", ">=", "AAA").where("myData_insensitive", "<=", "aaa").orderBy("myData_insensitive")</code>
このクエリは、大文字と小文字を区別しない順序で「AAA」と「aaa」を返します。
以上がCloud Firestore で大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。