sql >> Database >  >> NoSQL >> MongoDB

MongoDB aggregeert velden zonder alle velden van tevoren te kennen

Je kunt onderstaande aggregatie proberen.

Converteer het object naar een reeks sleutelwaardeparen gevolgd door $unwind+$group om op elke sleutel te groeperen en de telling bij elkaar op te tellen. Laatste stap om terug te gaan naar genoemd sleutelwaarde-object.

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. Waarden toevoegen aan een bson.D-object

  2. best practice van django + PyMongo pooling?

  3. MongoDB in 2018 - Een jaaroverzicht

  4. Hoe krijg ik een binaire stream door GridFS ObjectId met Spring Data MongoDB