این فصل به معرفی لولهکشی تجمعی 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
توجه: برای اطلاعات بیشتر درباره تجزیه و تحلیل آماری تجمعی، لطفا به فصول بعدی مراجعه کنید.