MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agregacja MongoDB $podziel pola obliczane

Prawie to dostałeś. Jedyną zmianą, która byłaby wymagana, jest to, że będziesz musiał obliczyć FailPercent w dodatkowym project faza, ponieważ suma jest dostępna dopiero po zakończeniu group faza. Spróbuj tego:

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. Jak zaprojektować, czy pole istnieje?

  2. Spring Boot Data i MongoDB — filtrowanie zapytań dotyczących tablicy dokumentów podrzędnych

  3. Dlaczego przed identyfikatorem dokumentu MongoDb znajduje się podkreślenie?

  4. Znajdź i usuń wszystkie dokumenty, których data utworzenia jest o jeden miesiąc starsza

  5. MongoDB:Dokumenty zastępujące i podrzędne