MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB aggrega i campi senza conoscere tutti i campi in anticipo

Puoi provare sotto l'aggregazione.

Converti l'oggetto in una matrice di coppie chiave-valore seguite da $unwind+$group per raggruppare in base a ciascuna chiave e accumulare il conteggio. Passaggio finale per tornare all'oggetto valore chiave denominato.

db.colname.aggregate([
  {"$addFields":{"metrics":{"$objectToArray":"$metrics"}}},
  {"$unwind":"$metrics"},
  {"$group":{
    "_id":{"id":"$player_id","key":"$metrics.k"},
    "count":{"$sum":"$metrics.v"}
  }},
  {"$group":{
    "_id":"$_id.id",
    "metrics":{"$mergeObjects":{"$arrayToObject":[[["$_id.key","$count"]]]}}
  }}
])