4

我正在使用 MongoDB 标准 $sort 操作,发现如果有一个小写的大写字符串,结果会被打乱。

例子:

Google
HTC
LG
Yoc
iTaxi

如您所见,iTaxi被推到底部,而不是位于HTC.

4

1 回答 1

6

这是区分大小写的排序,小写字母排在大写字母之后。因此,出于排序和搜索的目的,存储“规范化字段”是有意义的,其中字符串都是大写字母,并且某些特殊字符被删除或替换,例如

[ { name : "iTaxi", searchName: "ITAXI" },
  { name : "HTC", searchName: "HTC" },
  { name : "Ümlaut", searchName: "UMLAUT" },
  .... ]

在此示例中,searchName应该索引字段,而不是name字段。

字符串的规范化,特别是替换变音符号和特殊字符,有点棘手。例如,在德语中ü应该成为ue并且ß应该成为ssor sz,但这远远超出了您最初问题的范围。

于 2013-03-14T17:38:34.003 回答