اگر یادتان باشد در انتهای جلسه ی قبل به شما تکلیفی دادم که بدین شرح بود: ما می خواهیم برای هر فرد فقط بالاترین نمره ی کسب شده را نمایش بدهیم! یعنی دیگر آرایه ی examScores را نداشته باشیم بلکه بالاترین نمره مستقیما به جایش قرار بگیرد. برای انجام این کار چندین روش مختلف وجود دارد. یکی از این روش ها بدین صورت است که ابتدا برای به دست آوردن بالاترین نمره، باید کل آرایه را unwind$ کنیم تا به ازای هر نفر چندین سند بگیریم (اگر یادتان باشد در جلسات قبل این اتفاق افتاد و به ازای هر فرد چندین کپی دریافت کردیم که مقدار hobbies در آن ها فرق می کرد). سپس اسناد برگردانده شده را بر اساس فرد، sort می کنیم و سپس بالاترین نمره برای هر فرد را پیدا کرده و دریافت می کنیم. در این جلسه می خواهیم این مسئله را با هم حل کنیم. همانطور که در خلاصه ی جواب گفتم، قدم اول unwind$ کردن کل examScore ها است:
db.friends.aggregate([
{ $unwind: “$examScores” }
]).pretty() با این کار به ازای هر examScore یک کپی از سند ساخته می شود تا هر سند فقط یک examScore داشته باشد. سپس باید نتایج را به صورت نزولی Sort$ کنیم:
پنل نویسندگان