Lors du retour du résultat pour db.jason.find().sort({"rank":1})
, MongoDB ordonnera les documents par type de "rang", puis par valeur de "rang". Aux fins de l'ordre de tri, MongoDB traite les documents où un champ est manquant comme ayant un type NULL pour ce champ. Le type NULL est classé avant les types numériques, et cela ne peut pas être changé (voir http://docs.mongodb.org/manual/reference/method/cursor.sort/
pour l'ordre de tri de type intégré). Je suggérerais plutôt de construire deux requêtes (une pour les documents contenant "rang" et une pour les documents sans "rang") et de fusionner les résultats dans votre application. Cependant, si vous avez besoin de garder cette requête unique, vous devrez définir "rank" dans tous les documents pour générer l'ordre que vous désirez (par exemple, en utilisant une valeur sentinelle avec un type qui trie après les types numériques).