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

MongoDB samler felter uden at kende alle felterne på forhånd

Du kan prøve nedenstående aggregering.

Konverter objektet til en række nøgleværdipar efterfulgt af $unwind+$group for at gruppere efter hver nøgle og akkumulere antallet. Sidste trin for at gå tilbage til navngivet nøgleværdiobjekt.

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. MongoDB kan ikke parse forespørgsel (2dsphere):to betingelser

  2. redis hukommelse og cpu spikes

  3. indsæt array i mongodb ved hjælp af pymongo

  4. Hvordan omdøber jeg felter, når jeg udfører søgning/projektion i MongoDB?