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

स्थिति प्रतिशत के अनुसार समूह और योग MongoDb एकत्रीकरण

आप नीचे दिए गए एग्रीगेशन को 3.4 पाइपलाइन में आज़मा सकते हैं।

तत्व की स्थिति के आधार पर भार निर्दिष्ट करें।

$switch सरणी के आकार के आधार पर अलग-अलग भार प्रदान करने का मामला।

db.col.aggregate([{"$addFields":{
  "myArray":{
    "$switch":{
      "branches":[{
        "case":{"$gt":[{"$size":"$myArray"},2]},
        "then":{"$concatArrays":[
            [{"value":{"$arrayElemAt":["$myArray.value",0]},"weight":{"$divide":[2,5]}}],
            {"$map":{
              "input":{"$slice":["$myArray",1,{"$subtract":[{"$size":"$myArray"},2]}]},
              "as":"val",
              "in":{"value":"$$val.value","weight":{"$divide": [{"$divide":[1,5]},{"$subtract":[{"$size":"$myArray"},2]} ]}}
            }},
            [{"value":{"$arrayElemAt":["$myArray.value",-1]},"weight":{"$divide":[2,5]}}]
          ]}
       },
       {
        "case":{"$eq":[{"$size":"$myArray"},2]},
        "then":{"$concatArrays":[
          [{"value":{"$arrayElemAt":["$myArray.value",0]},"weight":{"$divide":[1,2]}}],
          [{"value":{"$arrayElemAt":["$myArray.value",-1]},"weight":{"$divide":[1,2]}}]
        ]}
       }],
    "default":{"$concatArrays":[
      [{"value":{"$arrayElemAt":["$myArray.value",0]},"weight":1}],
    ]}}
  }
}},
{"$unwind":"$myArray"},
{"$group":{
  "_id":"$myArray.value",
  "linear_total":{"$sum":{"$multiply":["$myArray.weight","$total"]}}
}},
{"$sort":{"_id":1}}])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MeteorJS MongoDB परिनियोजन त्रुटि

  2. mgo क्वेरी से ObjectIdHex मान प्राप्त करें

  3. mongomapper भू-स्थानिक 'के भीतर' क्वेरी

  4. MongoDB उपलब्ध कनेक्शन

  5. नेवले के खोज फ़ंक्शन के लिए क्वेरी ऑब्जेक्ट पैरामीटर में पारित अपरिभाषित मानों पर ध्यान न दें?