Que diriez-vous :
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Parce qu'après tout, lorsqu'un champ sur lequel vous voulez trier n'est pas réellement présent, la valeur renvoyée est null
et donc "inférieur" dans l'ordre à tout résultat positif. Il est donc logique d'exclure ces résultats si vous ne recherchez vraiment que quelque chose avec une valeur correspondante.
Si vous voulez vraiment tous les résultats là-dedans et indépendamment d'un null
contenu, alors je vous suggère de les "pondérer" via .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Et cela déplace tous les null
résultats au « bout de la chaîne » en attribuant une valeur en tant que telle.