När du returnerar resultatet för db.jason.find().sort({"rank":1})
, kommer MongoDB att sortera dokumenten efter "rank"-typ och sedan efter "rank"-värde. I syfte att sortera, behandlar MongoDB dokument där ett fält saknas som att de har en NULL-typ för det fältet. NULL-typen ordnas före numeriska typer, och detta kan inte ändras (se http://docs.mongodb.org/manual/reference/method/cursor.sort/
för den inbyggda sorteringsordningen). Jag skulle föreslå att du istället konstruerar två frågor (en för dokument som innehåller "rank", och en för dokument utan "rank") och slår samman resultaten i din ansökan. Men om du behöver behålla detta en enda fråga, måste du ställa in "rank" i alla dokument för att generera den ordning du önskar (till exempel genom att använda ett sentinelvärde med en typ som sorterar efter numeriska typer).