Pokud jsem správně pochopil, co chcete, můžete zkusit toto:
db.builds.aggregate([
{ $project:
{
time: 1,
projectedData: { $ifNull: ['$data.buildResult', 'none'] }
}
},
{ $group: {
_id: {
month: { $month: "$time" },
day: { $dayOfMonth: "$time" },
year: { $year: "$time" },
buildResult: "$projectedData"
},
count: { $sum: { $cond: [ { $eq: [ "$projectedData", "none" ] }, 0, 1 ] } }
} },
{ $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } }
])
Aktualizace:
Chcete-li z výstupu získat více dokumentů, které byly na vstupu, je to možné pouze pomocí unwind
operátor, který pracuje s poli, ale nemáte žádná pole, takže pokud vím, ve vašem případě není možné získat více dokumentů. Měli byste tedy po výsledku dotazu přidat nějakou logiku, abyste vytvořili nová data pro existující data s počtem 0 pro jiný typ buildResult...