A co powiesz na:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Ponieważ w końcu jeśli pole, według którego chcesz sortować, nie jest faktycznie obecne, zwracana wartość to null
i dlatego "niżej" w kolejności niż jakikolwiek pozytywny wynik. Dlatego warto wykluczyć te wyniki, jeśli naprawdę szukasz tylko czegoś o pasującej wartości.
Jeśli naprawdę chcesz, aby były tam wszystkie wyniki i niezależnie od null
treści, sugeruję „zważenie” ich za pomocą .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
A to przenosi wszystkie null
wyniki do "końca łańcucha" poprzez przypisanie wartości jako takiej.