Co třeba:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Protože koneckonců, když pole, podle kterého chcete třídit, není ve skutečnosti přítomno, vrácená hodnota je null
a tedy "nižší" v objednávce než jakýkoli kladný výsledek. Pokud tedy skutečně hledáte pouze něco s odpovídající hodnotou, má smysl tyto výsledky vyloučit.
Pokud tam opravdu chcete mít všechny výsledky a bez ohledu na null
obsah, pak navrhuji, abyste je "zvážili" pomocí .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
A to přesune vše null
výsledkem je "konec řetězce" přiřazením hodnoty jako takové.