sql >> Database >  >> NoSQL >> MongoDB

Mongodb:gebruik recordtelling in aggregatie na een groep

U kunt de onderstaande aggregatiequery gebruiken.

Initiële $group om het totale aantal te berekenen terwijl $push het conceptenveld in het matrixveld. $$ROOT om toegang te krijgen tot het hele document.

Bewaar het totale aantal artikelen in de volgende $group .

Rust alles blijft zoals je hebt gedaan.

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 is ook een optie waarbij u twee query's in twee afzonderlijke pijplijnen kunt uitvoeren, gevolgd door samenvoegen om door te gaan met de rest van de fasen.




  1. Python en MongoDB:verbinding maken met NoSQL-databases

  2. MongoDB Multikey Indexes &Index Intersection Bounds

  3. MongoDB $max

  4. Verkrijg ObjectIdHex-waarde van mgo-query