Si entiendo correctamente lo que quieres, puedes intentar esto:
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 } }
])
Actualización:
Desea obtener de la salida más documentos que estaban en la entrada, solo es posible con unwind
operador que trabaja con matrices, pero no tiene matrices, por lo que sé que es imposible obtener más documentos en su caso. Por lo tanto, debe agregar algo de lógica después del resultado de la consulta para crear nuevos datos para las fechas existentes con un recuento de 0 para otro tipo de buildResult...