आपको अपने $project
. में थोड़ा सा संशोधन करने की आवश्यकता है वस्तु। आपको 1
. घटाने पर प्राप्त हुई वस्तु का उपयोग करना होगा count
. से , count
. के पिछले मान का उपयोग करने के बजाय ।
DBObject project = new BasicDBObject("_id", 0);
DBObject countAfterSubtraction = new BasicDBObject("$subtract",
new Object[] {"$count", 1});
DBObject value = new BasicDBObject("$divide",
new Object[] {"$value",countAfterSubtraction});
project.put("value", value);
project.put("Date", "$_id");
stages.add(new BasicDBObject("$project", project));
उपरोक्त कोड उन समूहों के लिए काम करेगा जिनके पास records >= 2
. है . यदि केवल एक रिकॉर्ड वाला एक समूह है, तो घटाव के बाद की संख्या शून्य होगी, जिसके परिणामस्वरूप शून्य से विभाजित हो जाएगा। त्रुटि।
तो आप एक $cond<शामिल करने के लिए अपना कोड संशोधित कर सकते हैं /मजबूत>
, यह जांचने के लिए कि क्या घटाव के बाद की गिनती 0
है , अगर यह है, तो इसे 1
. पर डिफ़ॉल्ट करें , अन्यथा count
. का घटाया गया मान रखें ।
DBObject project = new BasicDBObject("_id", 0);
DBObject countAfterSubtraction = new BasicDBObject("$subtract",
new Object[] {"$count", 1});
DBObject eq = new BasicDBObject("$eq",
new Object[]{countAfterSubtraction,0});
DBObject cond = new BasicDBObject("$cond",
new Object[]{eq,1,countAfterSubtraction});
DBObject value = new BasicDBObject("$divide",
new Object[] {"$value",cond});
project.put("value", value);
project.put("Date", "$_id");
stages.add(new BasicDBObject("$project", project));