MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo-Aggregation

Angenommen, Sie haben die neueste Version von mongodb installiert, können Sie dies folgendermaßen tun:

  • Sort die Datensätze basierend auf dem published_date in absteigender Reihenfolge.
  • group die Datensätze basierend auf ihrer category . Sammeln Sie für jede Gruppe alle Datensätze zusammen in einem Array.
  • Im Javascript-/clientseitigen Code slice die Top 5 Datensätze jeder Gruppe (Kategorie).

Das $slice ist im serverseitigen $project nicht verfügbar Aggregation-Pipeline-Operator, der uns davon abhält, die Operation auf der Serverseite durchzuführen.

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)};
});

Das result Variable ist jetzt ein Array von Dokumenten. Jedes Dokument, das jede category repräsentiert und wiederum mit einem Array von Top 5 Aufzeichnungen.