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

Làm cách nào tôi có thể lấy n nhóm hàng đầu cho một tập hợp và tất cả các nhóm khác được kết hợp vào một nhóm khác?

Những gì bạn muốn được gọi là trọng số . Để làm điều đó, bạn cần thêm trọng số cho tài liệu của mình bằng cách $project nhập chúng và sử dụng $cond toán tử, sau đó sắp xếp chúng theo "trọng lượng" theo thứ tự khác tăng dần và theo "lượng mua" theo thứ tự giảm dần.

db.collection.aggregate([
    { "$project": { 
        "purchasequantity": 1, 
        "w": { 
            "$cond": [ { "$eq": [ "$_id", "others" ] }, 1, 0 ] 
        } 
    }}, 
    { "$sort": { "w": 1, "purchasequantity": -1 } } 
])

Trả về:

{ "_id" : "customer100", "purchasequantity" : 4000000, "w" : 0 }
{ "_id" : "customer5", "purchasequantity" : 81800, "w" : 0 }
{ "_id" : "customer4", "purchasequantity" : 40900, "w" : 0 }
{ "_id" : "customer3", "purchasequantity" : 440, "w" : 0 }
{ "_id" : "customer1", "purchasequantity" : 300, "w" : 0 }
{ "_id" : "others", "purchasequantity" : 29999, "w" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sao chép một bộ sưu tập trong MongoDB

  2. Phần tử 'id' không khớp với bất kỳ trường hoặc thuộc tính nào bị lỗi với các lớp lồng nhau

  3. tìm bởi _id với Mongoose

  4. Truy vấn danh sách trong mongoengine; chứa so với trong

  5. MongoDB tìm tài liệu con và sắp xếp kết quả