MongoDB คืออะไร? + สอนวิธีใช้งานเบื้องต้น
กระแส MEAN Stack มาแรงมากช่วงนี้ จะไม่เขียนก็ไม่ได้ ฉะนั้นบทความนี้จะพาไปรู้จักตัว M หนึ่งใน 4 ของ MEAN Stack นั่นก็คือ MongoDB กันครับ ว่ามันคืออะไร มีประโยชน์อย่างไร และใช้งานเบื้องต้นยังไงกันดีกว่า
สำหรับใครที่กำลังหัดเขียน Node.js และ MongoDB สามารถติดตามอ่านบทความซีรีย์ สอนทำเว็บไซต์ด้วย Node.js, Express และ MongoDB - ตอนที่ 6 - MongoDB ซึ่งผมนำบทความที่เคยเขียน ไปใส่เป็นส่วนหนึ่งในซีรีย์นี้ครับ
Table of Contents
- Step 1 : MongoDB คืออะไร ?
- Step 2 : ดาวน์โหลดและติดตั้ง MongoDB
- Step 3 : คำสั่ง และ Mongo Shell เบื้องต้น
- Step 4 : Mongo GUI ด้วย Robomongo
Step 1 : MongoDB คืออะไร ?
MongoDB เป็น open-source document database โดยเป็นฐานข้อมูลแบบ NoSQL คือไม่มี relation (ความสัมพันธ์) ของตารางแบบ SQL ทั่วๆไป แต่จะเก็บข้อมูลเป็นแบบ JSON (JavaScript Object Notation) แทน การบันทึกข้อมูลทุกๆ record ใน MongoDB เราจะเรียกมันว่า Document ซึ่งจะเก็บค่าเป็น key และ value จะเห็นว่ามันก็คือ JSON นั่นแหละ ตัวอย่างเช่น
และการเก็บข้อมูล document ใน MongoDB จะถูกเก็บไว้ใน Collections (เปรียบเทียบได้กับ Table ใน Relational Database ทั่วๆไป) แต่แตกต่างกันที่ collection ไม่จำเป็นที่จะต้องมี schema เหมือนกันก็สามารถบันทึกข้อมูลได้
ใน MongoDB ข้อมูล document ที่เก็บใน collection จะมีคีย์
_id
ทำหน้าที่เปรียบเสมือน primary key อยู่ด้วย
Schemaless
Schemaless คือการไม่ต้องกำหนดโครงสร้างใดๆให้มันเหมือน SQL ปกติทั่วไป เช่น collection User
มีเก็บแค่ name ต่อมาเราสามารถเพิ่มการเก็บ position เข้ามาได้เลย แบบนี้
MongoDB ไม่รองรับการ join หรือ SQL
เปรียบเทียบ MongoDB และ MySQL คร่าวๆ ดังนี้
MySQL | MongoDB |
---|---|
Table | Collection |
Row | Document |
Column | Field |
Joins | Embedded documents, linking |
Step 2 : ดาวน์โหลดและติดตั้ง MongoDB
เข้าหน้า Download ของ MongoDB จากนั้นเลือก OS ที่ใช้ วิธีการติดตั้งก็จะแตกต่างกันในแต่ละ OS
MongoDB เวอร์ชั่นล่าสุด ไม่รองรับ Windows XP
- วิธีการติดตั้ง MongoDB บน Windows
- วิธีการติดตั้ง MongoDB บน Linux
- วิธีการติดตั้ง MongoDB บน Mac OS X
สำหรับเครื่องผมก็ติดตั้งผ่าน Homebrew บน Mac OS X ง่ายๆดังนี้
เมื่อติดตั้งเสร็จเรียบร้อยแล้ว ก็ทำการทดสอบว่ารัน MongoDB ได้มั้ย วิธีการรันก็คือ
ถ้าเป็น Windows ก็จะเป็น
หากไม่สามารถรันได้ ให้ทำการสร้างโฟลเดอร์ /data/db ด้วย
mkdir -p /data/db
Step 3 : คำสั่ง และ Mongo Shell เบื้องต้น
หลักจากติดตั้ง และสั่ง start MongoDB server แล้ว การเข้าสู่ Mongo Shell ทำได้โดยการพิมพ์บน Terminal ด้วยคำสั่ง
หากไม่รู้ว่ามีคำสั่งอะไรบ้างที่สามารถใช้ได้ใน Mongo Shell ให้พิมพ์
สามารถดูรายชื่อฐานข้อมูลทั้งหมดด้วยคำสั่ง
จะแสดงรายชื่อฐานข้อมูลในเครื่อง ประมาณนี้ (อันนี้ฐานข้อมูลเล่นๆในเครื่อง)
เราสามารถเลือกฐานข้อมูลที่ต้องการจากรายชื่อได้ โดยใช้ use <db_name>
เช่น
ใช้คำสั่งเพื่อดูว่าฐานข้อมูลนี้มี collection อะไรบ้าง ด้วย
Insert
ใน Mongo Shell สามารถเซฟ collection ได้ง่ายๆด้วย db.collectionName.save()
เช่น
ด้านบนเป็นการเซฟข้อมูลลง collection ชื่อว่า things
อีกตัวอย่าง เช่น เซฟลง collection ชื่อ players เช่น
Query
การค้นหาข้อมูล ใน Mongo Shell จะใช้คำสั่ง db.collectionName.find()
ตัวอย่างเช่น
จากตัวอย่าง เราได้ทำการเพิ่มข้อมูลลงไปใน collection players ฉะนั้นลอง find()
จะได้ผลลัพธ์ดังนี้
การค้นหาโดยกำหนดเงื่อนไข เช่น ค้นหา collection ที่มี name เท่ากับ Lionel Messi
เราสามารถใช้
pretty()
เพื่อแสดง result ให้สวยงามได้ เช่นdb.players.find().pretty()
Update
การ Update ข้อมูล เราจะใช้ $set
operator ดังเช่น
จากโค๊ดด้านบน MongoDB จะทำการ query หา collection players ที่มี name เท่ากับ Lionel Messi จากนั้นก็ทำการ update โดยเพิ่ม age ให้มีค่า 28 ผลลัพธ์เมื่อลอง query ใหม่ จะได้เป็น
Remove
การลบข้อมูลใน MongoDB จะใช้ remove()
เช่น ลบข้อมูลที่ name ชื่อว่า Lionel Messi
หรือหากต้องการกำหนดว่าให้ลบแค่ 1 record ก็ได้ ด้วย flag justOne
เช่น
Step 4 : Mongo GUI ด้วย Robomongo
หลายๆคนอาจจะสงสัยว่า นอกจากดูผ่าน Mongo Shell แล้วมีวิธีดูแบบง่ายๆผ่าน GUI บ้างมั้ย? คำตอบคือมีครับ และที่นิยมและน่าจะดีที่สุดสำหรับผม ก็คือ RoboMongo
- สามารถดาวน์โหลดและติดตั้ง Robomongo ได้ที่นี่ มีทุก Platform (เวอร์ชั่นล่าสุดคือ 0.8.5)
จุดเด่นของ Robomongo คือ
- ใช้คำสั่งได้เหมือนกับ Mongo Shell ทุกประการ
- สามารถเปิดได้หลายๆ Shell
- รองรับ Autocompletion เผื่อเวลาลืมคำสั่งก็จะมี guide ให้
- ดูข้อมูล Result ได้หลากหลายแบบ
- ดูข้อมูลรายละเอียด collections ได้ง่าย
สรุป
ในบทความนี้ เราก็จะได้รู้จักกับ MongoDB เบื้องต้น ขั้นตอนการติดตั้ง การใช้งาน Mongo Shell และคำสั่งเบื้องต้นของ MongoDB แต่ว่ายังมีอะไรให้เล่นและใ้ห้ศึกษาไ้ด้อีกเยอะเลย หวังว่าบทความนี้จะเป็นพื้นฐานให้ผู้อ่านได้นำไปต่อยอดและมีประโยชน์กับผู้เร่ิมต้น ทุกคนนะครับ :) ลิงค์ไปต่อสำหรับผู้ที่สนใจเพิ่มเติม
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust