Сортировка без учета регистра с Mongoid - PullRequest
11 голосов
/ 20 декабря 2010

Прямо сейчас я получил:

@directories = collection.directories.all.asc(:name)

Но это с учетом регистра, как мне сделать сортировку без учета регистра?

Ответы [ 5 ]

16 голосов
/ 21 декабря 2010

В настоящее время вы не можете создать регистронезависимые индексы в MongoDB, см. ...

http://jira.mongodb.org/browse/SERVER-90

Так что, похоже, это означает, что вы не можете выполнять "сортировку" без учета регистра.

Вы можете активировать эту функцию для последующего включения в MongoDB по ссылке выше, если сочтете ее полезной.

Элиот Горовиц из 10Gen (сторонники MongoDB) предлагает это в то же время:

На короткий срок - я бы просто добавил 2-е поле, которое вы вызываете .toLower () на перед вставкой. Тогда вы можете отсортировать на этом.

4 голосов
/ 20 декабря 2010

Вероятно, вам придется хранить поле дважды, один раз с его реальным значением и снова со всеми строчными буквами.Затем вы можете запросить версию в нижнем регистре для поиска без учета регистра (не забудьте также нижний регистр строки запроса).

Этот подход работает (или необходим) для многих систем баз данных, и он должен работать лучше, чемметоды, основанные на регулярных выражениях (по крайней мере, для префикса или точного соответствия).

Проверьте этот ответ

2 голосов
/ 19 февраля 2014

Если в вашей коллекции нет сбоя памяти (99% времени), просто отсортируйте ее там:

Blah.all.sort_by{|i| i.blah_field.downcase}
0 голосов
/ 04 мая 2011
regexsearch = Regexp.new(params[:search], true)

@users = User.where(:email => regexsearch).all

Это должно сделать это:)

0 голосов
/ 20 декабря 2010

Я думаю, вам придется использовать регулярное выражение

Редактировать: возможно нет, хотя функция была запрошена https://jira.mongodb.org/browse/SERVER-90

...