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

मोंगोडब गणना क्वेरी--संचयी गुणन

आप नीचे एकत्रीकरण का उपयोग कर सकते हैं:

db.ccpsample.aggregate([
  { $sort: { ccp_id: 1, period: 1 } },
  { 
    $group: {
      _id: "$ccp_id",
      items: { $push: "$$ROOT" },
      baseSale: { $first: "$sales" },
      growths: { $push: "$growth" }
    }
  },
  {
    $unwind: {
      path: "$items",
      includeArrayIndex: "index"
    }
  },
  {
    $project: {
      cpp_id: "$items.cpp_id",
      period: "$items.period",
      growth: "$items.growth",
      sales: {
        $cond: {
          if: { $ne: [ "$items.sales", "NULL" ] },
          then: "$items.sales",
          else: {
            $reduce: {
              input: { $slice: [ "$growths", "$index" ] },
              initialValue: "$baseSale",
              in: { $multiply: [ "$$value", { $add: [1, { $divide: [ "$$this", 100 ] }] } ] }
            }
          }
        }
      }
    }
  }
])

मूल रूप से n-th . के मान की गणना करने के लिए तत्व आपको निम्नलिखित बातों को जानना होगा:

  • पहले तत्व का बिक्री मूल्य ($first $group . में )
  • सभी growths की सरणी ($push $group . में )
  • n जो इंगित करता है कि आपको कितने गुणन करने हैं

सूचकांक की गणना करने के लिए आपको $push . करना चाहिए सभी तत्वों को एक सरणी में रखें और फिर $unwind includeArrayIndex . के साथ विकल्प जो index . फ़ील्ड में अवांछित सरणी की अनुक्रमणिका सम्मिलित करेगा ।

अंतिम चरण संचयी गुणन की गणना करता है। यह $slice का इस्तेमाल करता है index . के साथ कितने growths . का मूल्यांकन करने के लिए फ़ील्ड संसाधित किया जाना चाहिए। तो 601 . के लिए एक तत्व होगा , 602 . के लिए दो तत्व और इसी तरह।

फिर $reduce का समय आ गया है उस सरणी को संसाधित करने और अपने सूत्र के आधार पर गुणा करने के लिए:(1 + (growth/100) )




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी डॉकर छवि का उपयोग करके रोबोमोंगो को कनेक्ट नहीं कर सकता

  2. लेखन त्रुटि:[{}] में '_id' खोजने के लिए 'इन' ऑपरेटर का उपयोग नहीं कर सकता

  3. NodeJS एक्सप्रेस निर्भरता इंजेक्शन और डेटाबेस कनेक्शन

  4. MongoDB के साथ मूल ES6 वादों का उपयोग करना

  5. नेवला के माध्यम से आइटम को मोंगो सरणी में पुश करें