Om jag förstår rätt vad du vill kan du prova detta:
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 } }
])
Uppdatering:
Du vill få ut fler dokument som har lagts in, det är endast möjligt med unwind
operatör som fungerar med arrayer, men du har inga arrayer, så som jag vet är det omöjligt att få fler dokument i ditt fall. Så du bör lägga till lite logik efter frågeresultat för att skapa ny data för befintliga datum med 0 antal för en annan typ av buildResult...