Làm thế nào về:
db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
Bởi vì xét cho cùng khi trường bạn muốn sắp xếp không thực sự có mặt thì giá trị trả về là null
và cho "thấp hơn" theo thứ tự hơn bất kỳ kết quả dương tính nào. Vì vậy, sẽ hợp lý khi loại trừ những kết quả đó nếu bạn thực sự chỉ đang tìm kiếm thứ gì đó có giá trị phù hợp.
Nếu bạn thực sự muốn tất cả các kết quả ở đó và không có null
nội dung, thì tôi khuyên bạn nên "cân" chúng qua .aggregate()
:
db.users.aggregate([
{ "$project": {
"name": 1,
"score": {
"$cond": [
{ "$ifNull": [ "$name", false ] },
1,
10
]
}
}},
{ "$sort": { "score": 1, "name": 1 } }
])
Và điều đó di chuyển tất cả null
kết quả đến "cuối chuỗi" bằng cách gán một giá trị như vậy.