¿Qué tal:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Porque, después de todo, cuando un campo que desea ordenar no está realmente presente, el valor devuelto es null
y por lo tanto "inferior" en el orden que cualquier resultado positivo. Por lo tanto, tiene sentido excluir esos resultados si realmente solo está buscando algo con un valor coincidente.
Si realmente desea todos los resultados allí e independientemente de un null
contenido, entonces te sugiero que los "peses" a través de .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Y eso mueve todo null
resultados hasta el "final de la cadena" asignando un valor como tal.