Skip to content
GitHub

Indexing နှင့် Aggregation

MongoDB အခြေခံရပြီဆိုရင် လက်တွေ့ Project အကြီးတွေမှာ အမြဲသုံးရမယ့် အရေးကြီးတဲ့ အဆင့်မြင့် လုပ်ဆောင်ချက် ၂ ခုကို လေ့လာပါမယ်။

Indexing (အညွှန်းတပ်ခြင်း)

Section titled “Indexing (အညွှန်းတပ်ခြင်း)”

စာအုပ်တစ်အုပ်မှာ ကိုယ်လိုချင်တဲ့ ခေါင်းစဉ်ကို စာမျက်နှာတိုင်း လိုက်လှန်ရှာရင် အရမ်းကြာပါမယ်။ နောက်ဆုံးက မာတိကာ (Index) ကို ကြည့်ရှာရင် ချက်ချင်း တွေ့ပါတယ်။

Database မှာလည်း Data တွေ သောင်းချီ၊ သိန်းချီ ရှိလာတဲ့အခါ find() နဲ့ ရှာရင် အရမ်းနှေးသွားပါတယ်။ အဲ့ဒီအခါ အခါတိုင်း ရှာလေ့ရှိတဲ့ Field (ဥပမာ- email) ကို Index လုပ်ပေးရပါတယ်။

// email ကို အမြန်ရှာလို့ရအောင် Index လုပ်မယ်
db.users.createIndex({ email: 1 });

(၁ ဆိုတာ အစဉ်လိုက် (Ascending) စီထားမယ်လို့ ဆိုလိုတာပါ။ -၁ ဆိုရင် ပြောင်းပြန်။) Index လုပ်ထားရင် Data တွေ အများကြီးထဲက ရှာရတဲ့နှုန်းက ဆယ်ဆလောက် ပိုမြန်သွားတတ်ပါတယ်။


Aggregation (ဒေတာများကို ဆင့်ကဲ စီမံခြင်း)

Section titled “Aggregation (ဒေတာများကို ဆင့်ကဲ စီမံခြင်း)”

ဒေတာတွေကို ရိုးရိုး ပြန်ထုတ်ရုံတင်မကဘဲ၊ စစ်ထုတ်မယ် -> ပေါင်းမယ် -> ကျန်တဲ့ဟာကို ယူမယ် ဆိုတဲ့ ဆင့်ကဲလုပ်ဆောင်မှု (Pipeline) ကို လုပ်ချင်ရင် Aggregation သုံးပါတယ်။ တကယ့် Report တွေ, Dashboard တွေ လုပ်ရင် မရှိမဖြစ်ပါ။

ရေပိုက်ထဲ ရေဖြတ်သန်းသွားသလို အဆင့်ဆင့် စစ်ထုတ်၊ တွက်ချက်သွားတာ ဖြစ်ပါတယ်။ အသုံးများတာတွေကတော့:

  • $match (WHERE လိုပဲ၊ လိုချင်တဲ့ Data တွေပဲ စစ်ထားခဲ့တာ)
  • $group (GROUP BY လိုပဲ၊ ကဏ္ဍတူရာတွေ စုပြီး ပေါင်း/ပျမ်းမျှ ရှာတာ)
  • $project (SELECT လိုပဲ၊ ပြချင်တဲ့ အပိုင်းပဲ ရွေးထုတ်တာ)
  • $sort (ORDER BY လိုပဲ၊ အစဉ်လိုက် စီတာ)

ဥပမာ: Yangon က User တွေရဲ့ အသက်စုစုပေါင်း ဘယ်လောက်ရှိလဲ တွက်ကြည့်မယ်:

db.users.aggregate([
{
$match: { city: "Yangon" } // အဆင့် ၁: ရန်ကုန်သားတွေပဲ ရွေးမယ်
},
{
$group: {
_id: "$city", // အဆင့် ၂: မြို့အလိုက် စုမယ်
totalAge: { $sum: "$age" } // အသက်တွေ အကုန်ပေါင်းမယ်
}
}
]);

Aggregation ဟာ SQL ရဲ့ JOIN နဲ့ ရှုပ်ထွေးတဲ့ Queries တွေကို အစားထိုးနိုင်တဲ့ MongoDB ရဲ့ အစွမ်းထက်ဆုံး စွမ်းဆောင်ရည် တစ်ခုဖြစ်ပါတယ်။