sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB agreguje pole, aniž by předem znal všechna pole

Můžete zkusit níže agregaci.

Převeďte objekt na pole párů klíč-hodnota následované $unwind+$group pro seskupení podle každého klíče a akumulaci počtu. Poslední krok pro návrat k pojmenovanému objektu klíčové hodnoty.

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. Výjimka Mongodb, výjimka MongoCursorException' se zprávou '$ operátor udělal objekt příliš velký Co to znamená?

  2. Jak získat výstup mongo shellu (tři tečky) pro neukončený příkaz

  3. Zveřejněte obrázek pomocí binárních a dalších dat

  4. Mohu snadno vrátit všechna pole vnořeného dokumentu jako pole v dokumentu nejvyšší úrovně pomocí agregačního rámce?