این فصل به معرفی لوله‌کشی تجمعی MongoDB می‌پردازد که اصولاً برای تجزیه و تحلیل آماری استفاده می‌شود و شبیه به عبارت group by در SQL است. در پایانه MongoDB، تجزیه و تحلیل آماری از طریق تابع db.collection.aggregate() انجام می‌شود.

مفهوم

لوله‌کشی تجمعی یک مفهوم انتزاعی است که داده‌ها را مانند آبی که از طریق یک لوله جریان دارد، می‌پذیرد. ما می‌توانیم داده‌ها را در چندین مرحله مختلف در داخل لوله‌کشی پردازش کنیم. پس از پردازش داده‌ها توسط یک مرحله، نتایج پردازش‌شده به مرحله بعدی برای پردازش بیشتر منتقل می‌شوند.

نمونه‌های استفاده از لوله‌کشی تجمعی در تجزیه و تحلیل آماری:

  • در مرحله اول، یک دسته داده سند از مجموعه بر اساس شرایط خاص بازیابی می‌شود.
  • در مرحله دوم، داده‌های سند بازیابی‌شده گروه‌بندی و تجمعی می‌شوند.
  • در مرحله سوم، داده‌های تجمعی از مرحله دوم مرتب می‌شوند.

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

اپراتورهای پشتیبانی‌شده توسط لوله‌کشی MongoDB

در زیر اپراتورهای معمول موجودیتی که توسط MongoDB پشتیبانی می‌شود آمده است:

اپراتور توضیحات
$match مرحله $match برای فیلتر کردن داده‌های سند بر اساس شرایط استفاده می‌شود، شبیه به شرط where در SQL.
$group مرحله $group برای گروه‌بندی و تجمعی داده‌های سند استفاده می‌شود، مشابه فرمان group by در SQL.
$sort برای مرتب‌سازی داده‌ها استفاده می‌شود.

گام‌های استفاده از لوله‌کشی تجمعی

معمولاً سه گام درگیر هستند:

  • فیلتر کردن داده‌های هدف با استفاده از $match.
  • گروه‌بندی و تجمعی داده‌ها با استفاده از $group.
  • مرتب‌سازی نتایج با استفاده از $sort (اختیاری).

نمونه:

db.orders.aggregate([
                     { $match: { status: "A" } },
                     { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
                     { $sort: { total: -1 } }
                   ])

SQL معادل:

select sum(amount) as total from orders 
		where status="A" 
		group by cust_id 
		order by total desc

توجه: برای اطلاعات بیشتر درباره تجزیه و تحلیل آماری تجمعی، لطفا به فصول بعدی مراجعه کنید.