Wat dacht je van:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Want als een veld waarop u wilt sorteren niet echt aanwezig is, dan is de geretourneerde waarde null
en daarom "lager" in de volgorde dan enig positief resultaat. Het is dus logisch om die resultaten uit te sluiten als u echt alleen op zoek bent naar iets met een overeenkomende waarde.
Als je echt alle resultaten erin wilt hebben en ongeacht een null
inhoud, dan raad ik je aan ze te "wegen" via .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
En dat verplaatst alle null
resultaten naar het "einde van de keten" door een waarde als zodanig toe te kennen.