Нечувствительная к регистру сортировка с помощью Mongoid

Сейчас я получил:

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

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

Ответ 1

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

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

Итак, похоже, что вы не можете делать и регистрацию без учета регистра.

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

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

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

Ответ 2

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

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

Отметьте ответ

Ответ 3

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

Blah.all.sort_by{|i| i.blah_field.downcase}

Ответ 5

regexsearch = Regexp.new(params[:search], true)

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

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