sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb:Använd rekordantal i aggregering efter en grupp

Du kan använda nedanstående aggregeringsfråga.

Initial $group för att beräkna det totala antalet medan $push begreppsfältet till arrayfält. $$ROOT för att komma åt hela dokumentet.

Behåll det totala antalet artiklar i nästa $group .

Vila förblir som du har gjort.

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 är också ett alternativ där du kan två frågor i två separata pipelines följt av sammanfogning för att fortsätta med resten av stegen.




  1. Verktyg för att skapa en visualisering från befintlig MongoDB

  2. konfiguration max gammal utrymmesstorlek i Nodejs

  3. Uppdatera en kapslad array med MongoDB

  4. Läs data från Redis till Flink