برنامه نویسی

راهنمای چارچوب جمع آوری MongoDB

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

در این مقاله یک راهنمای کامل و دقیق برای چارچوب تجمع MongoDB، توضیح مراحل کلیدی ، اپراتورها ، نحو و نمونه های دنیای واقعی. ما در هر مرحله تجمیع ، نحوه عملکرد آن و اینکه خروجی برای هر مثال به نظر می رسد ، قدم می زنیم.


1. تجمع در MongoDB چیست؟

تجمع در MongoDB به فرآیند تبدیل و ترکیب داده ها از چندین اسناد به یک نتیجه معنی دار اشاره دارد. شبیه به GROUP BY عملیات در SQL اما بسیار انعطاف پذیر و قدرتمندتر است.

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


2. خط لوله جمع آوری

خط لوله تجمع شامل یک دنباله از مراحل است که هر یک داده ها را به نوعی تغییر می دهند. داده ها در این مراحل به صورت متوالی جریان می یابد و هر مرحله از مرحله قبلی خروجی را دریافت می کند.

نحو اساسی:

db.collection.aggregate([
    { stage1 },
    { stage2 },
    { stage3 },
    ...
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

هر مرحله در آن محصور شده است {}و چندین مرحله در یک آرایه منتقل می شود. داده ها گام به گام پردازش می شوند و هر مرحله بر روی نتایج قبلی کار می کند.

مراحل کلیدی در خط لوله جمع آوری

  • مسابقه: داده ها را بر اساس شرایط فیلتر می کند (مشابه SQL WHERE).
  • گروه $: اسناد گروه هایی بر اساس یک زمینه و انجام عملیات تجمیع (مشابه SQL GROUP BY).
  • $: با انتخاب و تغییر نام زمینه ، داده ها را تغییر شکل می دهد.
  • $: اسناد را به ترتیب مشخص مرتب می کند.
  • حد مجاز: تعداد اسناد منتقل شده به مرحله بعدی را محدود می کند.
  • $ پرش: تعداد مشخصی از اسناد را رد می کند.
  • $ جستجو: اجرا پیوستن به بیرونی بین دو مجموعه.

3. مراحل تجمع توضیح داده شده است

مرحله مسابقه 3.1 $

در $match مرحله اسناد را بر اساس یک شرایط مشخص فیلتر می کند. معادل آن است WHERE بند در SQL.

نحو:

{
  $match: { field: value }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

اسناد را فیلتر کنید که در آن age بیشتر از 30 است:

db.users.aggregate([
  { $match: { age: { $gt: 30 } } }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

[
  { "_id": 1, "name": "Alice", "age": 35 },
  { "_id": 2, "name": "Bob", "age": 40 }
]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله گروهی 3.2 دلار

در $group اسناد گروههای مرحله ای بر اساس یک زمینه خاص و به شما امکان می دهد عملیات تجمیعی مانند انجام دهید sumبا avgبا count، و غیره

نحو:

{
  $group: {
    _id: <expression>,
    field1: { <operator>: <expression> },
    field2: { <operator>: <expression> }
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

کاربران گروه توسط آنها age و میانگین را محاسبه کنید salary برای هر گروه سنی:

db.users.aggregate([
  { 
    $group: {
      _id: "$age", // Group by age
      averageSalary: { $avg: "$salary" }
    }
  }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

[
  { "_id": 25, "averageSalary": 5000 },
  { "_id": 30, "averageSalary": 6000 },
  { "_id": 35, "averageSalary": 7000 }
]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


3.3 $ مرحله پروژه

در $project مرحله با انتخاب و یا تغییر نام زمینه ها ، اضافه کردن زمینه های جدید یا حذف زمینه ها ، هر سند را تغییر می دهد. شبیه به SELECT بند در SQL.

نحو:

{
  $project: {
    field1: 1,
    field2: 0,
    newField: { <expression> }
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

فقط پروژه name وت age زمینه ها ، و یک زمینه جدید ایجاد کنید ageInMonths:

db.users.aggregate([
  { 
    $project: {
      name: 1,
      age: 1,
      ageInMonths: { $multiply: ["$age", 12] }
    }
  }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

[
  { "name": "Alice", "age": 25, "ageInMonths": 300 },
  { "name": "Bob", "age": 30, "ageInMonths": 360 }
]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله مرتب سازی 3.4 $

در $sort مرحله اسناد را به ترتیب صعودی یا نزولی بر اساس یک زمینه یا زمینه سفارش می دهد.

نحو:

{
  $sort: { field: 1 }  // 1 for ascending, -1 for descending
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

مرتب سازی کاربران توسط age به ترتیب نزولی:

db.users.aggregate([
  { $sort: { age: -1 } }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

[
  { "_id": 2, "name": "Bob", "age": 30 },
  { "_id": 1, "name": "Alice", "age": 25 }
]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله حد مجاز 3.5 دلار

در $limit مرحله تعداد اسناد منتقل شده به مرحله بعدی خط لوله را محدود می کند. این برای صفحه بندی و محدود کردن تعداد نتایج مفید است.

نحو:

{
  $limit: <number>
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

نتیجه را به 5 سند محدود کنید:

db.users.aggregate([
  { $limit: 5 }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله پرش 3.6 $

در $skip مرحله تعداد مشخصی از اسناد را رد می کند و اسناد باقیمانده را به مرحله بعدی خط لوله منتقل می کند. این برای اهداف صفحه بندی مفید است.

نحو:

{
  $skip: <number>
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

از 5 سند اول پرش کنید:

db.users.aggregate([
  { $skip: 5 }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


3.7 $ مرحله جستجو (پیوستن)

در $lookup از مرحله برای انجام a استفاده می شود پیوستن به بیرونی بین دو مجموعه. شبیه SQL است JOIN عملیات و به شما امکان می دهد داده ها را از مجموعه های مختلف ترکیب کنید.

نحو:

{
  $lookup: {
    from: "other_collection",  // The collection to join
    localField: "field_in_local_collection",  // Field from the local collection
    foreignField: "field_in_foreign_collection",  // Field from the foreign collection
    as: "output_field"  // The name of the field to store the results
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال:

پیوستن users با orders:

db.users.aggregate([
  {
    $lookup: {
      from: "orders",  // The collection to join
      localField: "order_id",  // Field in `users` collection
      foreignField: "_id",  // Field in `orders` collection
      as: "order_details"  // Name of the new field in the output
    }
  }
])
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

[
  {
    "_id": 1,
    "name": "Alice",
    "order_id": 101,
    "order_details": [
      { "_id": 101, "product": "Laptop" },
      { "_id": 102, "product": "Phone" }
    ]
  },
  {
    "_id": 2,
    "name": "Bob",
    "order_id": 102,
    "order_details": [{ "_id": 102, "product": "Phone" }]
  }
]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان

مونگودب چارچوب تجمع روشی قدرتمند و انعطاف پذیر برای دستکاری و پردازش داده ها فراهم می کند. با استفاده از مراحل تجمع مانند $matchبا $groupبا $projectبا $sortبا $limitوت $lookupبرای دستیابی به نتایج متنوعی می توانید خطوط لوله پردازش داده های پیچیده ایجاد کنید.

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

این راهنما مراحل و عملیات اساسی را در چارچوب تجمع MongoDB در بر می گیرد و نمونه ها و توضیحاتی در مورد نحوه استفاده مؤثر از آنها ارائه می دهد. این که آیا شما در حال انجام نمایش داده شدگان ساده یا تحولات پیچیده داده هستید ، چارچوب جمع آوری یک مؤلفه اصلی MongoDB است که می تواند به شما در دستیابی به اهداف خود کمک کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا