私があなたが何を望んでいるのかを正しく理解しているなら、あなたはこれを試すことができます:
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 } }
])
更新:
入力されたドキュメントを出力から取得したい場合は、unwind
でのみ可能です。 配列を処理する演算子ですが、配列がないため、私が知っているように、あなたのケースでこれ以上ドキュメントを取得することは不可能です。したがって、クエリ結果の後にロジックを追加して、別のタイプのbuildResultのカウントが0の既存の日付の新しいデータを作成する必要があります...