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

Mongodb:usa il conteggio dei record nell'aggregazione dopo un gruppo

Puoi utilizzare la query di aggregazione di seguito.

$group iniziale per calcolare il conteggio totale mentre $push il campo dei concetti nel campo dell'array. $$ROOT per accedere all'intero documento.

Conserva il conteggio totale degli articoli nel prossimo $group .

Riposa tutto rimane come hai fatto tu.

db.articles.aggregate([
  {"$group":{
    "_id":null,
    "totalArticles":{"$sum":1},
    "concepts":{"$push":"$$ROOT.concepts"}
  }},
  {"$unwind":"$concepts"},
  {"$group":{
    "_id":"$concepts.text",
    "totalArticles":{"$first":"$totalArticles"},
    "count":{"$sum":1},
    "average":{"$avg":"$concepts.relevance"}
  }},
  {"$project":{
      "count": "$count",
      "percent": {
        "$divide": [ "$count", "$totalArticles" ]
      }
    }
  },
  {"$sort": {"count": -1}}
])

$facets è anche un'opzione in cui puoi due query in due pipeline separate seguite da unire per continuare con il resto delle fasi.