Thuta Learning
ရှာဖွေရန်
ProjectsData & Databasesintermediate

Mini Project: Task Manager Database — Part 1 (Setup နှင့် Schema Design)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Mini Project: Task Manager Database — Part 1 (Setup နှင့် Schema Design) ကို လက်တွေ့ project ထဲမှာ အသုံးချတတ်မယ်
  • ကိုယ်တိုင် code ရေးပြီး run ကြည့်တတ်မယ်
  • Project တစ်ခုလုံးကို အဆင့်လိုက် ဆောက်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ Mini Project မှာ Task Manager applications တွေမှာ သုံးလေ့ရှိတဲ့ tasks collection တစ်ခုကို MongoDB နဲ့ တည်ဆောက်ပါမယ်။ Document-based database မို့လို့ task တစ်ခုစီရဲ့ title, status, priority, dueDate, tags စတဲ့ field များကို document တစ်ခုတည်းထဲမှာ flexible အနေနဲ့ သိမ်းနိုင်ပါတယ်။ Real project တစ်ခု စတည်ဆောက်တဲ့အခါ ပထမဆုံး လုပ်ရမှာက database နဲ့ collection ကို ဖန်တီးပြီး sample data အနည်းငယ်ကို insert လုပ်ကြည့်တာပါ။ ဒီအဆင့်က နောက်ပိုင်း Part 2 (query/update) နဲ့ Part 3 (index/aggregation) အတွက် foundation ဖြစ်ပါတယ်။

လက်တွေ့ ဆောက်ကြည့်မယ်

taskManagerDB ဆိုတဲ့ database အသစ်တစ်ခုကို mongosh ထဲမှာ use command နဲ့ ဖွင့်ပါ။ ပြီးရင် tasks collection ကို insertMany() နဲ့ document သုံးလေးခု insert လုပ်ပါ — title (string), status (pending/in-progress/completed), priority (low/medium/high), dueDate (Date), tags (array) field တွေ ပါဝင်အောင် design လုပ်ပါ။ Insert ပြီးရင် find().pretty() နဲ့ collection ထဲက data တွေကို ပြန်ကြည့်ပြီး schema structure မှန်မမှန် စစ်ပါ။ Field name တွေနဲ့ data type တွေကို Part 2, Part 3 အတွက် အသုံးဝင်အောင် ဂရုစိုက်ရွေးပါ။

Code နမူနာ

javascript
// database အသစ်ကို ဖွင့်ပါ (မရှိသေးရင် အလိုအလျောက် ဖန်တီးမည်)
use taskManagerDB

// tasks collection ထဲကို sample task များ insert လုပ်ပါ
db.tasks.insertMany([
  {
    title: "Design homepage",
    status: "pending",
    priority: "high",
    dueDate: new Date("2026-09-01"),
    tags: ["design", "urgent"]
  },
  {
    title: "Write unit tests",
    status: "pending",
    priority: "medium",
    dueDate: new Date("2026-09-05"),
    tags: ["testing"]
  },
  {
    title: "Fix login bug",
    status: "in-progress",
    priority: "high",
    dueDate: new Date("2026-08-28"),
    tags: ["bug", "urgent"]
  }
])

// insert လုပ်ထားတဲ့ data တွေကို ပြန်ကြည့်ပါ
db.tasks.find().pretty()
You should see
insertMany() run ပြီးတဲ့အခါ acknowledged: true နှင့် insertedIds သုံးခုကို ပြန်ပေးပြီး find() က document သုံးခုစလုံးကို field များနှင့်တကွ ပြသမည်။

၅ မိနစ် စမ်းကြည့်

task document တစ်ခုထပ်ထည့်ပြီး assignee field (string) တစ်ခုပိုထည့်ကြည့်ပါ — collection ရဲ့ document တစ်ခုစီက field structure မတူချင် မတူနိုင်ဘူးဆိုတာကို ၅ မိနစ်အတွင်း စမ်းသပ်ကြည့်ပါ။

သတိလေးတစ်ချက်

MongoDB မှာ schema ကို strict အနေနဲ့ enforce မလုပ်ပေမယ့် field name spelling နှင့် data type ကို document အားလုံးမှာ consistent ဖြစ်အောင် အလေ့အထလုပ်ထားသင့်သည်၊ မဟုတ်ရင် query result တွေ မှားနိုင်သည်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • dueDate ကို string အနေနဲ့ ရိုက်ထည့်တတ်ကြပြီး Date object (new Date()) မဟုတ်တော့ Part 3 ရဲ့ date comparison query တွေမှာ error တက်တတ်သည်
  • status field ရဲ့ value spelling (ဥပမာ pending, Pending, PENDING) ကို document တိုင်းမှာ consistent မလုပ်ဘဲ query လုပ်တဲ့အခါ result မပြည့်စုံဖြစ်တတ်သည်

အခု ကိုယ်တိုင် စမ်းကြည့်

task document တစ်ခုထပ်ထည့်ပြီး assignee field (string) တစ်ခုပိုထည့်ကြည့်ပါ — collection ရဲ့ document တစ်ခုစီက field structure မတူချင် မတူနိုင်ဘူးဆိုတာကို ၅ မိနစ်အတွင်း စမ်းသပ်ကြည့်ပါ။

You'll know it worked when: insertMany() run ပြီးတဲ့အခါ acknowledged: true နှင့် insertedIds သုံးခုကို ပြန်ပေးပြီး find() က document သုံးခုစလုံးကို field များနှင့်တကွ ပြသမည်။

Mini Project: Task Manager Database — Part 1 (Setup နှင့် Schema Design) | Thuta Learning