Modeling with MongoDB

ดีทุกคนสำหรับวันนี้ ขอมาทำความเข้าใจกันก่อนนะครับ ว่านานมาเเล้วเคยเขียน mongodb เมื่อนานมาเเล้ว เเล้วก็เคยเขียนบทความมาเเล้วด้วยกัน เเต่วันนี้ยังไม่ได้ลองเขียนเกี่ยวการ ออกแบบ model หรือ schema เดี๋ยวมาลองเขียนก็เเล้วกันนะครับ

แนวคิดในการออกแบบ mongo ต้องลืมความเป็น sql ก่อนเลย

เราจะเขียน document database หรือ nosql คือชื่อของมันก็บอกอยู่เเล้วว่า มันไม่ได้เกิดมาเพื่อทำ relation กันอยู่เเล้วอะ ฉะนั้นสิ่งที่มันทำได้ดีกว่าแน่นอนก็คือ การ scale นั้นเอง ยังไงก็เลือกให้เหมาะกับงานเเล้วกันนะครับ เรามาดู โครงสร้างตัวอย่างกันก่อนนะครับ

การยกตัวอย่างของผมคือ สมมุติว่าเรามีบริษัทที่ต้องการเก็บข้อมูลของลูกค้าว่าเค้าซื้อแพ็คเกจอะไรบ้าง เราจะออกแบบ mongo เราอย่างไร ยกตัวอย่างเคศนี้เเล้วกันนะครับ เราอาจจะลองเก็บข้อมูลแบบนี้เลยก็ได้นะครับ

{
"id": "ObjectId()",
"account_name": "Sting",
"account_surname": "String",
"plan_name": "String",
"plan_price": "Number"
}

เก็บที่ตัว sehema ได้เลยแบบนี้ หรือเราจะเรียกแยกกันโดยใช้งานวิธี reference ตารางเอาก็ได้ สมมุติผมแยก schema ออกเป็น 3 ตารางได้แก่ accounts , plans, accountPlans ก็จะได้ดังนี้

// accounts schema
{
"id": "ObjectId()",
"account_name": "Sting",
"account_surname": "String"
}
// plans schema
{
"id": "ObjectId()",
"plan_name": "String",
"plan_price": "Number"
}
// accountPlans schema
{
"id": "ObjectId()",
"accounts": "Schema.Object",
"plans": "Schema.Object",
}

ที่นี้เวลาเราดึงค่าเราก็จะดึงค่าที่ตาราง accountPlans ที่เดียวได้เลยล่ะครับ

มันเป็นสองวิธีที่ผมไปเจอมานะครับ เราสามารถที่จะลองทำดูก้ได้ว่าวิธีไหนดี ตามคลิปนี้เลยครับ

สำหรับวันนี้ไปเเล้ว บ๊ายบาย ๆ

Kamonpob Pangwongtong

Written by

JUKE Master WTF! JUKE code

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade