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

Sắp xếp mục theo giá trị mongodb

Đây là một khái niệm chung được gọi là "trọng số". Vì vậy, nếu không có bất kỳ cơ chế nào khác, thì bạn xử lý điều này một cách hợp lý trong truy vấn MongoDB bằng cách "chiếu" các giá trị cho "trọng số" vào tài liệu một cách hợp lý.

Phương pháp của bạn để "chiếu" và thay đổi các trường có trong tài liệu của bạn là .aggregate() và cụ thể là $project giai đoạn đường ống:

db.collection.aggregate([
    { "$project": {
        "getthisfirst": 1,
        "weight": {
            "$cond": [
                { "$eq": [ "$getthisfirst", "yes" ] },
                10,
                { "$cond": [
                    { "$eq": [ "$getthisfirst", "maybe" ] },
                    5,
                    0
                ]}
            ]
        }
    }},
    { "$sort": { "weight": -1 } }
]);

$cond toán tử ở đây là "ternary" (if / then / else) điều kiện trong đó đối số đầu tiên là trạng thái có điều kiện đến boolean true|false . Nếu true "then" đối số thứ hai được trả về là kết quả, nếu không thì đối số "else" hoặc đối số thứ ba được trả về trong phản hồi.

Trong trường hợp "lồng nhau" này, khi "có" là một trận đấu thì điểm "trọng số" nhất định sẽ được chỉ định, nếu không, chúng tôi chuyển sang bài kiểm tra điều kiện tiếp theo trong đó khi "có thể" là một trận đấu thì điểm anốt được chỉ định, hoặc nếu không thì điểm là 0 vì chúng tôi chỉ có ba vị trí để phù hợp.

Sau đó, $sort điều kiện được áp dụng để "sắp xếp" (theo thứ tự giảm dần) các kết quả có "trọng số" lớn nhất ở trên cùng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để xóa các bản sao trong MongoDb?

  2. Làm thế nào để lấy dữ liệu được phân trang / cắt lát của mảng tài liệu con trong bộ sưu tập mongo?

  3. Không thành công:không có ý định thu thập trong kho lưu trữ

  4. Làm cách nào để tôi up một tài liệu có điều kiện trong mongo?

  5. Biểu diễn MongoDB - có bao nhiêu cơ sở dữ liệu, bộ sưu tập?