在 MongoDB 支援定序的系列中,我們一直在學習如何使用 Navicat for MongoDB GUI 管理和開發工具在 MongoDB 中指定定序。第 1 部分簡要介紹了定序的概念,涵蓋 MongoDB 中控制定序的欄位,並詳細介紹了定序文件的前三個欄位,即「地區設定」、「大小寫層級」和「大小寫優先」。今天的文章將描述其他欄位。
強度(strength)
下一個欄位「強度」是要執行比較的層級。
可能的值包括:
- Primary:定序僅執行基本字元的比較,略過其他差異,例如重音符號和大小寫。因此,å、ä 和 a 都將被視為同一個字元。
- Secondary:定序執行比較直到次要差異,例如重音符號。也就是說,基本字元+重音符號。請注意,基本字元之間的差異優先於次要差異。
- Tertiary:定序執行比較直到第二級差異,例如大小寫和字母變體。也就是說,定序執行基本字元、重音符號以及大小寫和變異數的比較。雖然英語只有大小寫變異數,但有些語言有不同但等同的字元,即簡體中文與繁體中文。在此層級,基本字元之間的差異優先於重音符號,而重音符號優先於大小寫和變異數差異。
- Quaternary:僅限於特定用例,以便在層級 1 到 3 略過標點符號時考慮標點符號或處理日文文字。
- Identical:限於平局決勝者(Tie-breaker)的特定用例。
這是預設層級。
在 Navicat 中,你可以在下拉式清單中找到所有上述的值:
數值排序(numericOrdering)
這個旗標用於判斷是將數字字串作為數字還是字串進行比較:
- 如果是「on」,則按數字進行比較; 即「10」大於「2」。
- 如果是「off」,則按字串進行比較; 即「10」小於「2」。
預設值為「off」。
替代(alternate)
這是另一個簡單但功能強大的欄位,用於判斷排序是否應將空格和標點符號視為基本字元以進行比較。
它只有兩個可能的值:
- non-ignorable:空格和標點符號被視為基本字元。
- shifted:空格和標點符號不被視為基本字元,僅在強度層級別大於 3 時辨別。
最大變數(maxVariable)
當「替代」設定為「shifted」時,這個欄位判斷直到哪些字元可以被略過。當「替代」設定為「non-ignorable」時,它不起作用。
它只有兩個可能的值:
- punct:白色空格和標點符號都是「可略過的」,即不被視為基本字元。
- space:只有空格是「可略過的」,即不被視為基本字元。
逆向(backwards)
這是另一個旗幟。這個判斷帶有重音的字串是否從字串的後面排序,例如使用一些法文字典排序。
- 如果是「on」,則從後到前進行比較。
- 如果是「off」,則從前到後進行比較。
預設值為「off」。
正規化
最後一個欄位是一個旗幟,用於判斷是否檢查文字是否需要正規化並執行正規化。通常,大多數文字不需要正規化處理。
- 如果是「on」,檢查是否完全正規化並執行正規化以比較文字。
- 如果是「off」,則不檢查。
預設值為「off」。
總結
現在我們已經涵蓋了所有定序的欄位。在未來的文章中,我們將學習如何將定序套用於 MongoDB 中的排序作業。