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

دسته: برنامه نویسی

قبل از هر جمله‌ای باید به شما بگوییم که برنامه نویسی یکی از پر درآمدترین شغل‌های دنیا محسوب می‌شود. همین جمله، انگیزه‌ای برای شما ایجاد می‌کند تا به ادامه این مطلب بپردازید و آموزش برنامه نویسی را با قدرت بیشتری جلو ببرید.

آشنایی با Project در فریم‌ورک aggregation

stage بعدی در فریم ورک aggregation، همان project$ نام دارد و به جای اینکه داده ها در یک گروه قرار دهد، تغییرات را روی تک تک داده ها اعمال می کند. ما با مفهوم projection در کوئری های find آشنا شده ایم اما projection در فریم ورک aggregation بسیار قدرتمند تر عمل می کند. بگذارید به شکل ساده شروع کنیم و بگوییم که نمی خواهیم هیچ فیلتر کردنی انجام بدهیم، بلکه می خواهیم تمام داده های موجود را تغییر بدهیم تا فقط gender را داشته باشند:
db.persons.aggregate([
{ $project: { _id: 0, gender: 1 } }
])
.pretty()
با اجرای این کوئری نتیجه ی زیر را می بینید (فقط بخشی از نتایج را می آورم): البته همانطور که از مبحث projection به یاد داریم، این تغییرات واقعا روی داده های اصلی اعمال نمی شوند بلکه داده های ارسال شده به ما تغییر می کنند. حالا می خواهیم چند فیلد مثل email و location را نیز بگیریم اما می خواهیم آن ها را تغییر بدهیم. مثلا name فقط یک فیلد باشد نه اینکه یک embedded document باشد که نام و نام خانوادگی را به صورت جداگانه دارد. برای این کار می گوییم: من خصوصیتی به نام fullName تعریف کرده ام که اپراتور concat$ را صدا می زند. این اپراتور دو یا چند رشته را در هم ادغام کرده و به هم می چسباند. این رشته ها باید به صورت یک آرایه به آن پاس داده شوند بنابراین از فیلد name خصوصیت first و last را داده ایم و بین آن ها یک رشته با یک فاصله (اسپیس) گذاشته ایم تا نام و نام خانوادگی به هم نچسبند. در ضمن یادتان نرود که رشته های داخل آرایه را با علامت $ بنویسید تا MongoDB بفهمد که منظور ما یک فیلد خاص است، در غیر این صورت رشته ی name.first و name.last را برای نام تمام افراد قرار می دهد. با اجرای کوئری بالا، نتیجه ی زیر را می گیریم: