どうですか:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
結局のところ、並べ替えたいフィールドが実際に存在しない場合、戻り値はnull
になります。 そのため、肯定的な結果よりも順序が「低く」なります。したがって、実際に一致する値を持つものだけを探している場合は、これらの結果を除外するのが理にかなっています。
本当にすべての結果がそこにあり、null
に関係なく必要な場合 コンテンツの場合は、.aggregate()
を使用して「重み付け」することをお勧めします :
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
そして、それはすべてのnull
を動かします そのように値を割り当てることにより、結果は「チェーンの終わり」になります。