MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगो क्वेरी में घटाव काम नहीं करता है?

आपको अपने $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));



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला अद्यतन गहरी सरणियाँ

  2. नेवला (मोंगोडब) उपनाम _id फ़ील्ड

  3. जावा में मोंगो डीबी क्वेरी

  4. नेवले के साथ अद्वितीय ऑटोइनक्रिकमेंट फ़ील्ड बनाएं

  5. एक नेवला स्कीमा कैसे बनाएं जो इनपुट को mongodb में html के रूप में सहेजता है