Que tal:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Porque, afinal, quando um campo que você deseja classificar não está realmente presente, o valor retornado é
null
e, portanto, "mais baixo" na ordem do que qualquer resultado positivo. Portanto, faz sentido excluir esses resultados se você realmente estiver procurando apenas algo com um valor correspondente. Se você realmente quer todos os resultados e independentemente de um
null
conteúdo, então sugiro que você os "pese" via .aggregate()
:db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
E isso move todos os
null
resultados ao "fim da cadeia" atribuindo um valor como tal.