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

Tổng hợp MongoDB $ chia các trường được tính

Bạn gần như đã hiểu. Chỉ thay đổi bắt buộc là bạn sẽ phải tính toán FailPercent trong một project bổ sung giai đoạn, bởi vì tổng số chỉ có sẵn sau khi hoàn thành group giai đoạn. Hãy thử điều này:

db.foo.aggregate([    
    { $match: { "data.buildResult" : { $ne : null } } },
    { $group: {          
        _id: {              
            month: { $month: "$time" },             
            day: { $dayOfMonth: "$time" },             
            year: { $year: "$time" },                       
        },         
        Aborted: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "ABORTED"]}, 1, 0]} },
        Failure: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "FAILURE"]}, 1, 0]} },
        Unstable: { $sum: { $cond : [{ $eq : ["$data.buildResult", "UNSTABLE"]}, 1, 0]} },
        Success: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "SUCCESS"]}, 1, 0]} },
        Total: { $sum: 1 }
    } }, 
    {$project:{Aborted:1, Failure:1, Unstable:1, Success:1, Total:1, FailPercent: { $divide: [ "$Failure", "$Total" ]}}},
    { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } } 
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thay đổi loại trường trong Mongoid mà không làm mất dữ liệu

  2. MongoDB $ pullAll

  3. Có cách nào đơn giản để xuất dữ liệu từ ứng dụng đã triển khai sao băng không?

  4. Những điều cần biết khi bắt đầu làm việc với MongoDB trong sản xuất - Mười lời khuyên

  5. không thể bắt đầu mongo db, ngoại lệ initandlisten