با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، طبق اسناد ، کاهش نقشه در MongoDB یک پارادایم پردازش داده است که حجم زیادی داده را به نتایج خالص و مفیدی از داده ها تبدیل می کند. MongoDB با دستور mapReduce برای عملیات کاهش نقشه استفاده می کند. دستور mapReduce در MongoDB به طور کلی برای پردازش داده های بزرگ استفاده می شود.
ابتدا با دستور کاهش نقشه یا همان دستور mapReduce در MongoDB آشنا می شوید.
در زیر سینتکس دستور mapReduce آمده است :
1 2 3 4 5 6 7 8 9 | >db.collection.mapReduce( function() {emit(key,value);}, //map function function(key,values) {return reduceFunction}, { //reduce function out: collection, query: document, sort: document, limit: number } ) |
تابع کاهش نقشه اول کوئری های یک مجموعه ، سپس نقشه های اسناد نتیجه را برای ارائه جفت های کلیدی-مقدار،
که پس از آن روی کلید هایی که دارای مقادیر متعدد هستند را کاهش می دهد.
ساختار سند زیر را برای ذخیره پست های کاربر در نظر بگیرید.
سند کاربر username_name کاربر و وضعیت پست را ذخیره می کند.
1 2 3 4 5 | { "post_text": "tutorialspoint is an awesome website for tutorials", "user_name": "mark", "status":"active" } |
اکنون ما از یک تابع mapReduce در مجموعه پست هایمان استفاده خواهیم کرد تا همه پست های فعال را انتخاب کنیم.
همچنین بر اساس نام user_name آن ها را گروه بندی کنیم.
سپس تعداد پست های هر کاربر را با استفاده از کد زیر شمارش کنیم.
1 2 3 4 5 6 7 8 | >db.posts.mapReduce( function() { emit(this.user_id,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ) |
کوئری mapReduce بالا نتیجه خروجی زیر را ایجاد می کند :
1 2 3 4 5 6 7 8 9 10 11 | { "result" : "post_total", "timeMillis" : 9, "counts" : { "input" : 4, "emit" : 4, "reduce" : 2, "output" : 2 }, "ok" : 1, } |
نتیجه نشان می دهد که مجموعا ۴ پرونده مطابقت با کوئری (وضعیت: “فعال”) می باشد، تابع نقشه ۴ اسناد با جفت کلید-مقدار را منتشر کرده است.
در نهایت تابع کاهش گروه بندی مدارک اسناد با همان کلیدها را به ۲ تبدیل می کند.
برای مشاهده نتیجه کوئری queryReduce، از find استفاده کنید :
1 2 3 4 5 6 7 8 | >db.posts.mapReduce( function() { emit(this.user_id,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ).find() |
کوئری بالا نتیجه زیر را نشان می دهد که هر دو کاربر tom و mark دارای دو پست در حالت های فعال هستند.
1 2 | { "_id" : "tom", "value" : 2 } { "_id" : "mark", "value" : 2 } |
به طور مشابه، کوئری های MapReduce می تواند برای ساختار کوئری های پیچیده تجمعی استفاده شود. توابع جاوا اسکریپت سفارشی از MapReduce استفاده می کند که بسیار انعطاف پذیر و قدرتمند است. آمورش دستور mapReduce در MongoDB همراه با مثال به شما عزیزان آموزش داده شد.امیدوارم از مطالب ذکر شده بهره مند شده باشید.