ホームページ > 記事 > ウェブフロントエンド > Cloud Firestore のクエリで大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?
Cloud Firestore のクエリを使用した Firestore 大文字と小文字を区別しない並べ替え
Cloud Firestore では、データの並べ替えでは本質的に大文字と小文字が区別されます。 OrderBy メソッドを使用すると、指定されたフィールドに基づいてデータが昇順または降順で並べ替えられます。ただし、「AAA」や「aaa」など、データに大文字と小文字の違いが含まれている場合、返される順序は希望どおりにならない可能性があります。
大文字と小文字を区別する並べ替えの問題
デフォルトでは、Firestore は次の順序でデータを並べ替えます:
AAA BBB aaa bbb
ただし、期待されるのは次のとおりです:
AAA aaa BBB bbb
解決策: 大文字と小文字を区別しないデータの保存
Firestore には並べ替え時に大文字と小文字を無視するための組み込みフラグが提供されていないため、大文字と小文字を区別しない並べ替えを実現する唯一の方法は、大文字と小文字を区別しないバージョンのデータを含む追加フィールドを保存することです。
値「AAA」と「aaa」を格納する myData というフィールドについて考えてみましょう。大文字と小文字を区別しない並べ替えを行うには、大文字と小文字を区別しないバージョンのデータを含む myData_insensitive という 2 番目のフィールドを保存する必要があります。
DocA: -> myData = 'AAA' -> myData_insensitive = 'AAA' DocB: -> myData = 'aaa' -> myData_insensitive = 'AAA' DocC: -> myData = 'BBB' -> myData_insensitive = 'BBB' DocD: -> myData = 'bbb' -> myData_insensitive = 'BBB'
大文字と小文字を区別しないデータによるクエリと並べ替え
myData_insensitive でデータのクエリと並べ替えを行うことができるようになりました。これにより、大文字と小文字を区別せずに目的の並べ替え結果が得られます。
Unicode とローカルの考慮事項
重要Unicode の大文字と小文字の正規化は、単に小文字または大文字に変換するよりも複雑であることに注意してください。言語によって照合ルールが異なる場合があり、文字の並べ替え方法に影響します。
大文字と小文字の正規化に大文字と小文字の分割を使用する
これらの複雑さに対処するには、大文字と小文字の分割を使用して大文字と小文字の正規化を実装できます。これにより、大文字と小文字の形式が異なる文字 (「a」、「A」など) が同等のものとして扱われることが保証されます。最新のブラウザは、このためのネイティブ関数をサポートしています。
例を示します。
<code class="javascript">caseFoldNormalize = function (s) { return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase(); };</code>
この例では、大文字と小文字の違いを無視して、文字列 s を完全に正規化されたバージョンに変換します。
By大文字と小文字を区別しない並べ替えと正規化を利用すると、大文字と小文字を区別しない方法で Cloud Firestore でデータを効果的に並べ替えることができ、大文字と小文字の違いに関係なくデータの順序の一貫性を確保できます。
以上がCloud Firestore のクエリで大文字と小文字を区別しない並べ替えを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。