Нечувствительная к регистру сортировка с помощью 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}
Ответ 4
Думаю, вам придется использовать regex
Изменить: возможно, нет, функция была запрошена, хотя https://jira.mongodb.org/browse/SERVER-90
Ответ 5
regexsearch = Regexp.new(params[:search], true)
@users = User.where(:email => regexsearch).all
Это должно сделать это:)