अगर मैं सही ढंग से समझता हूं कि आप क्या चाहते हैं, तो आप इसे आजमा सकते हैं:
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
के साथ ही संभव है ऑपरेटर जो सरणियों के साथ काम करता है, लेकिन आपके पास कोई सरणियाँ नहीं हैं, इसलिए जैसा कि मुझे पता है कि आपके मामले में अधिक दस्तावेज़ प्राप्त करना असंभव है। तो आपको किसी अन्य प्रकार के निर्माण परिणाम के लिए 0 गणना के साथ मौजूदा तिथियों के लिए नया डेटा बनाने के लिए क्वेरी परिणाम के बाद कुछ तर्क जोड़ना चाहिए ...