Bagaimana dengan:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Karena bagaimanapun juga ketika bidang yang ingin Anda sortir sebenarnya tidak ada maka nilai yang dikembalikan adalah null
dan karenanya "lebih rendah" dalam urutan daripada hasil positif apa pun. Jadi masuk akal untuk mengecualikan hasil tersebut jika Anda benar-benar hanya mencari sesuatu dengan nilai yang cocok.
Jika Anda benar-benar menginginkan semua hasil ada di sana dan terlepas dari null
konten, maka saya sarankan Anda "menimbang" mereka melalui .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Dan itu memindahkan semua null
hasil ke "ujung rantai" dengan menetapkan nilai seperti itu.