sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB samlar fält utan att känna till alla fält innan

Du kan prova nedanstående aggregering.

Konvertera objektet till array av nyckelvärdespar följt av $unwind+$grupp för att gruppera efter varje nyckel och ackumulera antalet. Sista steget för att gå tillbaka till namngivet nyckelvärdeobjekt.

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"]]]}}
  }}
])



  1. Förstå WriteConcern i MongoDB C#

  2. Få tillgång till undersamling i mongoid med skenor för att redigera och skapa ny post

  3. returnera lösa fel i nodfunktion

  4. Key-Value Database med Java-klient