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

Mongo Aggregation

Forudsat at du har den seneste version af mongodb installeret, er en måde at gøre det på:

  • Sort posterne baseret på published_date i faldende rækkefølge.
  • group posterne baseret på deres category . For hver gruppe skal du samle alle posterne i et array.
  • I javascript-/klientsidekoden slice de 5 bedste poster i hver gruppe(kategori).

$slice er ikke tilgængelig på serversiden $project aggregeringspipeline-operatør, som afholder os fra at udføre operationen på serversiden.

var result = db.collection.aggregate(
[
{$sort:{"published_date":-1}},
{$group:{"_id":"$category","values":{$push:"$$ROOT"}}}
]
).map(function(doc){
return {"category":doc._id,"records":doc.values.slice(0,5)};
});

result variabel vil nu være en række dokumenter. Hvert dokument repræsenterer hver category og til gengæld have en række af top 5 optegnelser.



  1. Node.js genbrug MongoDB-reference

  2. Mongoose findOne indlejret dokument af _id

  3. MongoDB forskel mellem $orderby og Sort

  4. gruppe i mongo ekskl. nulværdier