MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb:Използвайте броя на записите при агрегиране след група

Можете да използвате заявката за агрегиране по-долу.

Първоначален $group за изчисляване на общия брой, докато $push полето за понятия в поле за масив. $$ROOT за достъп до целия документ.

Запазете общия брой статии в следващата $group .

Останалото всичко си остава както досега.

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 също е опция, при която можете да направите две заявки в два отделни конвейера, последвани от сливане, за да продължите с останалите етапи.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jackson не може да десериализира MongoDB обект, преминал през REST

  2. Как да натиснете масив от обекти в масив в mongoose с едно извикване?

  3. mongoDB заявка с помощта на aggregate за запитване за най-новата дата на даден елемент

  4. Управлявайте Python Multiprocessing с MongoDB

  5. Условно размотаване в агрегацията на MongoDb?