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あり、またはにßなる必要がありますが、それは元の質問の範囲外です。sssz

于 2013-03-14T17:38:34.003 に答える