Hvad med:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
For når alt kommer til alt, når et felt, du vil sortere på, faktisk ikke er til stede, er den returnerede værdi null
og derfor "lavere" i rækkefølgen end noget positivt resultat. Så det giver mening at udelukke disse resultater, hvis du virkelig kun leder efter noget med en matchende værdi.
Hvis du virkelig vil have alle resultaterne derinde og uanset en null
indhold, så foreslår jeg, at du "vægter" dem via .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Og det flytter alle null
resultater til "enden af kæden" ved at tildele en værdi som sådan.