Vad sägs om:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
För när allt kommer omkring när ett fält du vill sortera på faktiskt inte finns så är det returnerade värdet null
och därför "lägre" i ordningen än något positivt resultat. Så det är vettigt att utesluta dessa resultat om du verkligen bara letar efter något med ett matchande värde.
Om du verkligen vill ha alla resultat där och oavsett en null
innehåll, då föreslår jag att du "vikter" dem via .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Och det flyttar alla null
resultat till "slutet av kedjan" genom att tilldela ett värde som sådant.