Podczas zwracania wyniku dla db.jason.find().sort({"rank":1})
, MongoDB uporządkuje dokumenty według typu „ranga”, a następnie według wartości „ranga”. Na potrzeby porządku sortowania MongoDB traktuje dokumenty, w których brakuje pola, jako mające typ NULL dla tego pola. Typ NULL jest porządkowany przed typami liczbowymi i nie można tego zmienić (patrz http://docs.mongodb.org/manual/reference/method/cursor.sort/
dla wbudowanej kolejności sortowania typów). Sugerowałbym zamiast tego skonstruowanie dwóch zapytań (jednego dla dokumentów zawierających „rank”, a drugiego dla dokumentów bez „rangi”) i scalenie wyników w aplikacji. Jeśli jednak chcesz zachować to pojedyncze zapytanie, będziesz musiał ustawić „ranking” we wszystkich dokumentach, aby wygenerować pożądaną kolejność (na przykład używając wartości sentinel z typem, który sortuje się po typach liczbowych).