Als ik goed begrijp wat je wilt, kun je dit proberen:
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 } }
])
Bijwerken:
U wilt uit de uitvoer meer documenten halen die in de invoer zijn geweest, dit is alleen mogelijk met unwind
operator die met arrays werkt, maar je hebt geen arrays, dus zoals ik weet is het onmogelijk om meer documenten in jouw geval te krijgen. U moet dus wat logica toevoegen na het queryresultaat om nieuwe gegevens te maken voor bestaande datums met een telling van 0 voor een ander type buildResult...