رفتن به نوشته‌ها

دسته: MongoDB (مونگو دی‌بی)

آرایه‌ها و اپراتور unwind$ در فریم‌ورک aggregation

ما به stage های مختلفی در فریم ورک aggregation پرداخته ایم اما حالا باید به سمت اپراتور ها و stage هایی برویم که با آرایه ها سر و کار دارند. به همین خاطر من داده هایی را از قبل برایتان آماده کرده ام: شما می توانید این داده ها را در یک فایل ذخیره کرده و با دستور mongoimport آن ها را وارد پایگاه داده ی خود کنید یا اینکه آن ها را کپی کرده و یک کالکشن جدید به نام friends بسازید. حتما می دانید که با insertMany می توانیم این کار را انجام بدهیم. البته باید برای کار با دستوراتی که به شکل بالا در چند خط نوشته شده اند، توضیحاتی بدهم. شما برای اجرای این دستورات چند راه دارید: آسان ترین راه این است که تمام کد را کپی کرده و سپس در ترمینال خود بگویید )friends.insertMany یعنی پرانتز انتهایی را قرار ندهید. سپس کد ها را paste کرده و سپس پرانتز نهایی را بگذارید. در نهایت کلید enter را بزنید تا داده ها وارد شوند. می توانید به سایت هایی مانند https://codebeautify.org/remove-extra-spaces رفته تا تمام white space ها را حذف کنید. مثلا من داده های بالا را به آن دادم و حالا کد من به شکل زیر در آمده است: db.friends.insertMany([ { “name”: “Max”, “hobbies”: [“Sports”, “Cooking”], “age”: 29, “examScores”: [ { “difficulty”: 4, “score”: 57.9 }, { “difficulty”: 6, “score”: 62.1 }, { “difficulty”: 3, “score”: 88.5 } ] }, { “name”: “Manu”, “hobbies”: [“Eating”, “Data Analytics”], “age”: 30, “examScores”: [ { “difficulty”: 7, “score”: 52.1 }, { “difficulty”: 2, “score”: 74.3 }, { “difficulty”: 5, “score”: 53.1 } ] }, { “name”: “Maria”, “hobbies”: [“Cooking”, “Skiing”], “age”: 29, “examScores”: [ { “difficulty”: 3, “score”: 75.1 }, { “difficulty”: 8, “score”: 44.2 }, { “difficulty”: 6, “score”: 61.5 } ] } ]) در نهایت مسئله به خود شما مربوط است. پس از اجرای این دستور مثل همیشه از mongodb یک تاییدیه می گیرید. در فریم ورک aggregation می توان کار های مختلفی با آرایه ها انجام داد بنابراین بهتر است بدون مقدمه شروع کنیم. در قدم اول می خواهم داده هایمان را بر اساس سن group$ کرده و سپس hobbies را در هم ادغام کنیم تا ببینیم هر سرگرمی متعلق به چند نفر است: