Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
Shoper Gamer
•
ติดตาม
1 ชั่วโมงที่แล้ว • การศึกษา
MongoDB คืออะไร
โดย
ในโลกที่ข้อมูลเติบโตอย่างรวดเร็ว และ มีรูปแบบที่หลากหลาย (Unstructured Data) ฐานข้อมูลแบบตาราง (Relational Database) แบบเดิมอาจเริ่มมีข้อจำกัด MongoDB จึงก้าวเข้ามาเป็นคำตอบในฐานะฐานข้อมูล NoSQL ยอดนิยมที่จัดเก็บข้อมูลในรูปแบบที่ใกล้เคียงกับ JSON ทำให้การพัฒนาแอปพลิเคชันสมัยใหม่ทำได้รวดเร็ว และ ยืดหยุ่นกว่าที่เคย
1
★
MongoDB คืออะไร
MongoDB เป็นฐานข้อมูล NoSQL ประเภท Document-Oriented ซึ่งแทนที่จะเก็บข้อมูลเป็นแถว และ คอลัมน์ในตาราง แต่มันจะเก็บข้อมูลเป็น "เอกสาร" (Documents) ในรูปแบบที่เรียกว่า BSON (Binary JSON)
★
ความแตกต่างกับ RDBMS
○ RDBMS (SQL)
ต้องกำหนดโครงสร้าง (Schema) ที่แน่นอนก่อนเริ่มใช้งาน
○ MongoDB (NoSQL)
มีโครงสร้างที่ยืดหยุ่น (Dynamic Schema) ข้อมูลในคอลเลกชันเดียวกันไม่จำเป็นต้องมีฟิลด์เหมือนกันทุกประการ
★
สถาปัตยกรรมภายในของ MongoDB
MongoDB ถูกออกแบบมาเพื่อการขยายตัว (Scalability) และ ความเสถียร (High Availability)
1) Replica Set
การทำสำเนาข้อมูลไว้หลายเครื่อง หากเครื่องหลัก (Primary) ล่ม เครื่องสำรอง (Secondary) จะขึ้นมาทำงานแทนทันที
2) Sharding
การแบ่งข้อมูลขนาดใหญ่ออกเป็นส่วนๆ และ กระจายไปเก็บในหลายเซิร์ฟเวอร์ (Horizontal Scaling)
3) WiredTiger Engine กลไกการจัดเก็บข้อมูลที่มีประสิทธิภาพสูง รองรับการบีบอัดข้อมูลเพื่อประหยัดพื้นที่ดิสก์
★
🛠 ตัวอย่างการใช้ CRUD ใน MongoDB
1) การเพิ่มข้อมูล (Create)
```javascript
// เพิ่มข้อมูลผู้ใช้ 1 ราย
db.users.insertOne({
name: "สมชาย ใจดี",
age: 30,
email: "
somchai@email.com
",
hobbies: ["อ่านหนังสือ", "เตะบอล"]
})
// เพิ่มข้อมูลหลายรายพร้อมกัน
db.users.insertMany([
{ name: "ส้ม", age: 25, city: "กรุงเทพ" },
{ name: "น้ำ", age: 28, city: "เชียงใหม่" }
])
1
```
2) การค้นหาข้อมูล (Read)
```javascript
// ค้นหาผู้ใช้ทั้งหมด
db.users.find()
// ค้นหาผู้ใช้ที่มีอายุมากกว่า 25 ปี ($gt = Greater Than)
db.users.find({ age: { $gt: 25 } })
// ค้นหาพร้อมเลือกแสดงเฉพาะฟิลด์ชื่อและอีเมล
db.users.find({ city: "กรุงเทพ" }, { name: 1, email: 1 })
```
3) การแก้ไขข้อมูล (Update)
```javascript
// อัปเดตอายุของ สมชาย เป็น 31
db.users.updateOne(
{ name: "สมชาย ใจดี" },
{ $set: { age: 31 } }
)
// เพิ่มฟิลด์ใหม่ให้ผู้ใช้ทุกคนที่อยู่เชียงใหม่
db.users.updateMany(
{ city: "เชียงใหม่" },
{ $set: { status: "Active" } }
)
```
4) การลบข้อมูล (Delete)
```javascript
// ลบผู้ใช้ชื่อ สมชาย
db.users.deleteOne({ name: "สมชาย ใจดี" })
// ลบผู้ใช้ทุกคนที่อายุต่ำกว่า 20 ปี
db.users.deleteMany({ age: { $lt: 20 } })
```
★
📊 การวิเคราะห์ข้อมูลขั้นสูง
หัวใจสำคัญของ MongoDB คือ Aggregation Pipeline ซึ่งทำงานเหมือนสายพานการผลิตข้อมูล
// ตัวอย่าง: นับจำนวนผู้ใช้แยกตามรายเมือง
db.users.aggregate([
1. กรองเฉพาะผู้ใหญ่ 👇
{ $match: { age: { $gte: 18 } } },
2. จัดกลุ่มตามเมืองและนับ 👇
{ $group: { _id: "$city", count: { $sum: 1 } } },
3. เรียงลำดับจากมากไปน้อย 👇
{ $sort: { count: -1 } }
])
★
ประโยชน์
✅️ ยืดหยุ่นสูง (Flexibility) ปรับเปลี่ยนโครงสร้างข้อมูลได้ตามความต้องการของแอปพลิเคชันโดยไม่ต้องทำ Migration ที่ซับซ้อน
✅️ ขยายตัวง่าย (Scalability) รองรับข้อมูลระดับ Terabyte หรือ Petabyte ได้อย่างสบายผ่านการทำ Sharding
✅️ ประสิทธิภาพการเขียนสูง
ออกแบบมาให้รองรับปริมาณการเขียนข้อมูลจำนวนมากได้ดีกว่า RDBMS แบบดั้งเดิม
✅️ Developer Friendly ทำงานร่วมกับภาษาโปรแกรมยอดนิยม (Node.js, Python, Java) ได้อย่างเป็นธรรมชาติ
★
ปัญหาทั่วไปและการแก้ไข 💡
- ลืมสร้าง Index
หากฐานข้อมูลใหญ่ขึ้นแต่ไม่ได้สร้าง Index การค้นหาจะช้าลงมาก
○ วิธีแก้
db.users.createIndex({ email: 1 })
- การออกแบบ Schema ผิดพลาด
แม้จะยืดหยุ่น แต่การเก็บข้อมูลซ้อนกัน (Embedding) มากเกินไปอาจทำให้ Document ใหญ่เกินขนาด (เกิน 16MB)
○ วิธีแก้
แยกข้อมูลที่ใหญ่เกินไปออกเป็นคอลเลกชันใหม่แล้วใช้การอ้างอิง (Referencing) แทน
✏️ Shoper Gamer
>>
https://shopergamer.vercel.app/
✓
NOSQL คืออะไร 👇
>>
https://www.blockdit.com/posts/67fa2307efe2dd58bc43076e
✓
JSON คืออะไร ทำไมถึงครองใจนักพัฒนา 👇
>>
https://www.blockdit.com/posts/688c632b53c4c184506d7506
✓
Unstructured Data คืออะไร 👇
>>
https://www.blockdit.com/posts/68b02edd55c01ff261e08801
Credit :
👇
●
https://www.blockdit.com/posts/606816e3ebde920c3ffefca3
●
https://www.blockdit.com/posts/5ff469cf6a419e02dcf60bc8
●
https://shorturl.at/0uhkN
เทคโนโลยี
ข่าวรอบโลก
mongodb
บันทึก
1
1
1
1
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2025 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย