Cloud Firestore:使用查询实现不区分大小写的排序
在 Cloud Firestore 中,使用 OrderBy() 函数对数据进行排序是区分大小写的,根据字符串的大小写产生顺序,如提供的示例中所示。但是,在某些情况下,可能会首选不区分大小写的排序。
不区分大小写排序的限制
Firestore 不提供不区分大小写排序的直接解决方案使用查询。这是因为排序和过滤操作是由数据库内部执行的,数据库对存储的实际数据进行操作。
解决方法:存储重复字段
推荐的方法实现不区分大小写的排序是将数据存储两次:
例如,考虑一个名为“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中文网其他相关文章!