Я почти уверен, что ответ "нет" для MongoDB.Там нет никакого способа предоставить пользовательскую функцию сортировки, вы можете только предоставить ключи для сортировки.Существует запрос пользовательских функций сортировки , и в них даже упоминается ваш конкретный случай использования:
помощник по сортировке javascript для пользовательской сортировки / индексации
[...]
Может ли это использоваться для сортировки по полю в алфавитном порядке и помещения документов с нулевым значением в конец набора результатов?
[...]
@nick - да
Так что вы не одиноки в желании поставить null
s на одном конце или другом.
Я думаю, что лучшее, что вы можете сделать сейчас, это сделать это в Ruby,что-то вроде этого:
nils, not_nils = People.asc(:age).partition { |p| p.age.nil? }
people = not_nils + nils
Я не использую Mongoid, но, предположительно, asc
дает вам Enumerable, если нет, то, возможно, вы могли бы вставить туда to_a
.Конечно, этот вид хакерства бесполезен, если вы разбиваете на страницы.