قواعد البيانات 1 دقيقة للقراءة 846 مشاهدات

أنابيب تجميع MongoDB: معالجة البيانات المتقدمة

تعمّق في أنابيب تجميع MongoDB لتحويلات البيانات المعقدة والتحليلات وإعداد التقارير.

MongoDB database

خط أنابيب التجميع في MongoDB

عالج البيانات وحوّلها بعمليات تجميع قوية.

مراحل خط الأنابيب الأساسية

// Match, Group, Sort
db.orders.aggregate([
    // Filter documents
    { $match: { status: 'completed', createdAt: { $gte: ISODate('2024-01-01') } } },

    // Group by customer
    { $group: {
        _id: '$customerId',
        totalOrders: { $sum: 1 },
        totalSpent: { $sum: '$amount' },
        avgOrder: { $avg: '$amount' }
    }},

    // Sort by total spent
    { $sort: { totalSpent: -1 } },

    // Limit results
    { $limit: 10 }
])

ربط المجموعات باستخدام lookup$

db.orders.aggregate([
    { $lookup: {
        from: 'customers',
        localField: 'customerId',
        foreignField: '_id',
        as: 'customer'
    }},
    { $unwind: '$customer' },
    { $project: {
        orderNumber: 1,
        amount: 1,
        'customer.name': 1,
        'customer.email': 1
    }}
])

دوال النوافذ (Window Functions)

db.sales.aggregate([
    { $setWindowFields: {
        partitionBy: '$region',
        sortBy: { date: 1 },
        output: {
            runningTotal: {
                $sum: '$amount',
                window: { documents: ['unbounded', 'current'] }
            },
            movingAvg: {
                $avg: '$amount',
                window: { documents: [-6, 0] }
            }
        }
    }}
])

البحث المُصنّف (Faceted Search)

db.products.aggregate([
    { $facet: {
        'byCategory': [
            { $group: { _id: '$category', count: { $sum: 1 } } }
        ],
        'byPriceRange': [
            { $bucket: {
                groupBy: '$price',
                boundaries: [0, 50, 100, 500],
                output: { count: { $sum: 1 } }
            }}
        ],
        'topProducts': [
            { $sort: { sales: -1 } },
            { $limit: 5 }
        ]
    }}
])

تستطيع خطوط أنابيب التجميع التعامل مع تحليلات معقّدة دون نقل البيانات خارج MongoDB.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.