MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB:Sắp xếp theo trường hiện có và sau đó theo thứ tự bảng chữ cái

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để áp dụng nhóm theo trên tài liệu lồng nhau trong MongoDB bằng MongoTemplate?

  2. Sử dụng MongoDB và Neo4j cùng nhau

  3. Mongo MapReduce chọn ngày mới nhất

  4. Python Mogo ImportError:không thể nhập tên Kết nối

  5. Làm cách nào để tạo nguồn cấp dữ liệu tệp từ những người mà người dùng đang theo dõi?