sql >> データベース >  >> NoSQL >> MongoDB

位置のパーセンテージに応じてグループ化して合計MongoDbAggregation

    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. 多くのデータロギング、DB、またはファイルのアーキテクチャ?

    2. mongosでのMongoDBエラー:位置オプションが多すぎます

    3. Dockerコンテナ内のRedis接続エラー

    4. このモルヒネマッピングの問題を修正する方法??? --->警告[org.mongodb.morphia.mapping.DefaultCreator]-dbObjで定義されているクラスが見つかりません: