Navicat 博客

2018 年 10 月 3 日,由 Robert Gravelle 撰写

排序规则包含一组用于字符串比较的特定于语言的规则,例如字母大小写和重音标记。对于由字母数字字符组成的简单项,一般的排序可适用,但是一旦包含特殊字符,例如 @、#、$、%(等)和 è、é、ê、ö(等等),你必须指定自己的排序规则。

MongoDB 在版本 3.4 中添加了排序规则支持,因此你可以为集合、视图、索引或支持排序规则的某些操作(如 find() 和 aggregate())指定排序规则。

今天的文章将简要介绍排序规则的概念,涵盖 MongoDB 中控制排序规则的字段,以及如何使用 Navicat for MongoDB GUI 管理和开发工具在 MongoDB 中指定排序规则。此外,我们今天将详细介绍排序规则文档的前三个字段,其余部分将在第 2 部分中介绍。

排序规则文档字段

若要使用默认选项以外的排序规则选项,你可以指定一个排序规则文档。它由以下字段组成:

{
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

你可以在“排序规则”选项卡上看到 Navicat 中显示的相同字段:

在以上所有字段中,只有“区域设置”字段是必需的,所有其他排序规则字段都是可选的。

现在让我们仔细看看每个字段,并好好地了解每个字段允许的值:

  • 区域设置(locale):

    区域设置标识特定用户社区,即一组共享相似文化和语言习语的个体。在实践中,社区是所有说同一种语言并生活在同一个国家的人的交集。例如,法国的法语区域与加拿大的法语区域不同。因此,“fr”是法国法语的区域设置代码,而“fr_CA”是添加了加拿大的2个字符国家/地区代码。虽然这两个地区有许多相似之处,但亦有一些差异,例如货币,法国使用欧元(€),而加拿大使用美元($)。

    正如你想象的那样,有许多区域设置代码。“区域设置”下拉列表包含许多更常见的代码。列表中的第一项“simple”指定了简单的二进制比较。你也可以在下拉列表的文本框输入你想要的代码。

    语言之间的排序差异

    关于排序,每种语言都有自己的排序顺序,有时甚至是多个排序顺序。以下是在不同的区域设置下对相同名称进行排序:

    • English (en): bailey, boffey, böhm, brown
    • German (de_DE): bailey, boffey, böhm, brown
    • German phonebook (de-DE_phonebook): bailey, böhm, boffey, brown
    • Swedish (sv_SE): bailey, boffey, brown, böhm
  • 大小写级别(caseLevel):

    这个标志用于确定是否包含大小写比较。

    • 如果是“on”,则包括大小写比较。
    • 如果是“off”,则不包括大小写比较。
  • 大小写优先(caseFirst):

    这个字段用于确定大小写差异的排序顺序。有效值包括:

    • “upper”:大写字母排序在小写之前。
    • “lower”:小写字母排序在大写之前。
    • “off”:默认值。类似于“lower”,但略有不同。

总结

在今天的文章中,我们了解了排序规则的概念,涵盖了 MongoDB 中控制排序规则的字段,并学习了如何使用 Navicat for MongoDB 在 MongoDB 中指定排序规则。熟悉了前三个排序规则字段的知识后,我们将在第 2 部分继续讨论最后五个字段。

Navicat 文章
频道条目
分享
文章归档