Che ne dici di:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Perché dopotutto quando un campo su cui vuoi eseguire l'ordinamento non è effettivamente presente, il valore restituito è null
e quindi "inferiore" nell'ordine a qualsiasi risultato positivo. Quindi ha senso escludere quei risultati se stai davvero cercando solo qualcosa con un valore corrispondente.
Se vuoi davvero tutti i risultati lì dentro e indipendentemente da un null
content, quindi ti suggerisco di "penderli" tramite .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
E questo sposta tutto null
risultati alla "fine della catena" assegnando un valore in quanto tale.