我正在使用 MongoDB 标准 $sort 操作,发现如果有一个小写的大写字符串,结果会被打乱。
例子:
Google
HTC
LG
Yoc
iTaxi
如您所见,iTaxi
被推到底部,而不是位于HTC
.
我正在使用 MongoDB 标准 $sort 操作,发现如果有一个小写的大写字符串,结果会被打乱。
例子:
Google
HTC
LG
Yoc
iTaxi
如您所见,iTaxi
被推到底部,而不是位于HTC
.
这是区分大小写的排序,小写字母排在大写字母之后。因此,出于排序和搜索的目的,存储“规范化字段”是有意义的,其中字符串都是大写字母,并且某些特殊字符被删除或替换,例如
[ { name : "iTaxi", searchName: "ITAXI" },
{ name : "HTC", searchName: "HTC" },
{ name : "Ümlaut", searchName: "UMLAUT" },
.... ]
在此示例中,searchName
应该索引字段,而不是name
字段。
字符串的规范化,特别是替换变音符号和特殊字符,有点棘手。例如,在德语中ü
应该成为ue
并且ß
应该成为ss
or sz
,但这远远超出了您最初问题的范围。