Collation特性(排序規則) 是mongoDB 3.4 版本新增的。 允許MongoDB的用戶根據不同的語言定制排序規則。
排序規則有如下的字段屬性
locale字段是強制性必選參數;所有其他排序規則字段都是可選的。
國家地區語言設置, 要指定簡單的二進制比較,將locale 值設定為 "simple" 即可
具體local 及國家地區語言對照表如下
使用語法, @collation=<variant> 可選
可選參數, 表示要執行的比較級別。有如下幾種參數值
可選參數,當strength 參數為1和2 時 該參數標識是否支持大小寫比較
如果caseLevel =true,表示支持大小寫比較
如果caseLevel =false , 表示不支持大小寫比較
Flag that determines whether to include case comparison at strength level 1 or 2
可選參數 在三級比較時 確定大小寫差異排序順序的字段
可選參數,確定是將數字字符串作為數字還是字符串進行比較的標誌, 默認值為fasle
如果 numericOrdering= true,表示將數字字符串作為數字比較,
例如,“10”大於“2”
反之,numericOrdering= false,則作為字符串進行比較。例如,“10”小於“2”
局限
示例:
// 設置排序後
結果:
可選參數。確定排序規則是否應將空格和標點符號視為基本字符以進行比較的字段。
可選參數, 當 alternate參數是 "shifted"時,確定哪些字符被視為可忽略的字段
當alternate= "non-ignorable"時, 該參數不生效
可選參數,確定帶有變音符號的字符串是否從字符串後面排序的標誌,例如某些法語字典排序。 如果為true,請從後到前進行比較。 如果為false,則從前到後進行比較。 默認值為false
可選參數。確定是否檢查文本是否需要規範化並執行規範化的標誌。通常,大多數文本不需要這種規範化處理。 如果為true,檢查是否完全規範化並執行規範化以比較文本。 如果為false,則不檢查。 默認值為fasle
Collation 參數中,locale 是必選參數,其他的都是可選參數,以下參數默認在所有語言環境中(locales)都是壹致的:
下圖是在不同locale 參數中,其他可選參數的默認值,供參考
支持排序規則的操作指指令如下圖所示
使用示例
對於索引前綴鍵不是字符串、數組和嵌入文檔的復合索引,指定不同排序規則的操作仍然可以使用索引來支持對索引前綴鍵的比較。
參考文檔: /docs/manual/reference/collation/