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

Tổng hợp MongoDB - giá trị trường dự án dưới dạng trường

Bạn có thể tổng hợp như sau:

  • $group theo subjectimportance , nhận số lượng tương ứng.
  • Sau đó, đến phần phức tạp, $project , nó sẽ phát triển tuyến tính theo số lượng tùy chọn mà importance lĩnh vực có thể giữ. hiện tại nó là ba - high , lowmedium .
  • $group kết quả trả về một lần nữa bởi subject và sử dụng $sum toán tử để accumulate số lượng cho các giá trị khác nhau của trường quan trọng.

mã mẫu:

db.t.aggregate([
{$group:{"_id":{"subject":"$subject",
                "importance":"$importance"},
         "count":{$sum:1}}},
{$project:{"_id":0,
           "subject":"$_id.subject",
           "result":{$cond:[
                           {$eq:["$_id.importance","high"]},
                           {"high":"$count"},
                           {$cond:[{$eq:["$_id.importance","low"]},
                                   {"low":"$count"},
                                   {"medium":"$count"}]}]}}},
{$group:{"_id":"$subject",
         "low":{$sum:"$result.low"},
         "medium":{$sum:"$result.medium"},
         "high":{$sum:"$result.high"}}},
])

dữ liệu thử nghiệm:

db.t.insert([
{"subject":"history","importance":"high"},
{"subject":"geography","importance":"low"},
{"subject":"history","importance":"low"},
{"subject":"history","importance":"medium"},
{"subject":"geography","importance":"low"},
{"subject":"history","importance":"low"}
])

kết quả:

{ "_id" : "geography", "low" : 2, "medium" : 0, "high" : 0 }
{ "_id" : "history", "low" : 2, "medium" : 1, "high" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mẹo quản lý sao lưu MongoDB cho các cụm bị chia nhỏ

  2. OverflowError:MongoDB chỉ có thể xử lý các int tối đa 8 byte?

  3. Làm thế nào để tránh nhiều quy trình nút làm những việc lặp đi lặp lại?

  4. Dữ liệu mùa xuân mongo sử dụng HOẶC trong Truy vấn

  5. MongoDB và tham gia