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

Mongodb:Brug rekordantal i aggregering efter en gruppe

Du kan bruge nedenstående aggregeringsforespørgsel.

Indledende $group for at beregne det samlede antal, mens $push begrebsfeltet til arrayfelt. $$ROOT for at få adgang til hele dokumentet.

Behold det samlede antal artikler i næste $group .

Resten forbliver 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 er også en mulighed, hvor du kan to forespørgsler i to separate pipelines efterfulgt af flette for at fortsætte med resten af ​​faserne.




  1. Zookeeper vs In-memory-data-grid vs Redis

  2. hvordan man bruger mapreduce i mongoose/mongodb forespørgsel underdokument?

  3. MongoDB valgfrit unikt indeks

  4. Installation af Redis på Debian 9