MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhóm và Tổng theo tỷ lệ phần trăm vị trí Tổng hợp MongoDb

Bạn có thể thử tổng hợp bên dưới trong quy trình 3,4.

Chỉ định trọng số dựa trên vị trí của phần tử.

$switch trường hợp để cung cấp các trọng số khác nhau dựa trên kích thước của mảng.

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. chia sẻ kết nối db trên toàn bộ ứng dụng trong mongoose

  2. Khung tổng hợp Mongo, Sắp xếp và sau đó nhóm không hoạt động

  3. Chỉ mục tài liệu con trong mongo

  4. Có bất kỳ hệ thống NoSQL khai thác đa lõi nào không?

  5. Lỗi khi tạo bean với tên 'personRepository':Không gọi được phương thức init; ngoại lệ lồng nhau là com.mongodb.util.JSONParseException: