Aggregation pipeline — match, group, project, unwind
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Pipeline przetwarza strumień dokumentów etapami. Match filtruje, group agreguje, project nadaje kształt wynikom, a unwind rozbija tablicę na osobne dokumenty.
JavaScript
db.orders.aggregate([
{ $match: { status: 'paid' } },
{ $group: { _id: '$customerId', total: { $sum: '$amount' } } },
{ $sort: { total: -1, _id: 1 } },
{ $limit: 5 }
]);Doprecyzowanie: sort po sumie następuje po group; limit przed grupowaniem zmieniłby znaczenie wyniku. W przykładzie amount jest kwotą całego zamówienia.
Pułapka: unwind może zwielokrotnić dokumenty i zawyżyć sumę. Wczesne filtrowanie pomaga, ale każdy etap nadal musi odpowiadać logice zadania.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.