Начиная с дат неправильной сортировки ....
Если вы храните дату как string
, это должно быть сортируемым как строка. Это довольно просто:
2013-11-08 // yyyy-mm-dd (the dashes would be optional)
До тех пор, пока каждый кусок строки даты сочетается с 0
Правильно, строки будут сортироваться естественным образом и так, как вы ожидаете.
Полное время даты хранится в UTC обычно:
2013-11-23T10:46:01.914Z
Но я бы также предложил вам вместо хранения значения даты в качестве строки, вы рассматриваете, будет ли использование нативной даты MongoDB иметь больше смысла (ссылка) Если вы посмотрите на структуру агрегации MongoDB, вы обнаружите, что есть много функции Это может манипулировать этими датами, в то время как строка очень ограничена.
Что касается сортировки строки, было отмечено, что она сортируется, как компьютер, хранит данные, а не то, как вы будете сортировать как личность. Если вы считаете, что строка хранится как его представление ASCII/UTF-8, вы должны понять, почему сортировка работает так, как она есть:
Zoe = [90, 111, 101]
geo = [103, 101, 111]
Если вы должны сортировать их в порядке убывания, как вы указали, вы должны увидеть, как "geo"
Внутреннее представление байта больше, чем у строки "Zoe"
(с 103
Сортировка выше 90
в таком случае).
Как правило, рекомендация при использовании MongoDB состоит в том, чтобы хранить строки дважды, если вам нужно сортировать строку, которая имеет смешанный корпус:
- Оригинальная строка (
"Title"
)
- Как нормализованная строка. Возможно, например, все как «строчные», возможно, с акцентированными символами также преобразованы в общий символ. Итак, вы получите новое поле под названием
"SortedTitle"
Например, и ваш код будет использовать это для сортировки, но отобразить фактические "Title"
пользователям.