การใช้งาน Mongo DB เบื้องต้น 1

การใช้งาน Mongo DB เบื้องต้น 1

หลังจากหายไปนานกับ mongo db ไม่ได้เขียนบทความเกี่ยวกับ mongo db เลยนับตั้งแต่ติดตั้งไว้ในครั้งก่อน การติดตั้ง mongodb บน window รอบนี้กลับมาจะเป็นการใช้งานเจ้า mongo db แบบง่ายๆ ถ้าเทียบกับ database ทั่วไปก็คงเหมือน select insert update delete ครับเรามาดูกันดีกว่า ว่าเจ้า mongo db นั้นจะใช้คำสั่งอะไรบ้างในการทำพวกนี้ เริ่มแรกการ insert ใส่ข้อมูลใหม่เข้าไปก่อน โดยข้อมูลจะมี field ที่ชื่อว่า web เก็บเป็นชื่อเว็บไซต์ ส่วน field ที่ 2 จะมีชื่อว่า viewcount เก็บค่าตัวเลขการถูกเปิดของเว็บไซต์ โดยเจ้า mongodb นั้นสามารถทำเหมือนกับการเขียน script ได้โดยผมทำการเก็บค่า document หรือ object ไว้ที่ตัวแปร A กับ B จากนั้นก็ใช้คำสั่ง db.webData.insert(A) กับ db.webData.insert(B) เพื่อทำการ insert ข้อมูลดังรูป

1

เจ้า mongodb นั้นมันจะ auto สร้างชื่อฐานข้อมูลให้เราเองเลย โดยที่ผมใช้คำสั่ง db.webData.insert นั้นคือชื่อที่ตามหลัง db. นั้นจะเป็นชื่อฐานข้อมูลจากนั้น . ด้วย operations ต่างๆ ของ mongodb

รูปเพื่อความเข้าใจในการใช้คำสั่ง insert ของ mongo db

crud-annotated-mongodb-insert

เมื่อเทียบกับคำสั่ง insert ใน sql

crud-annotated-sql-insert

2

ที่นี้นอกจากกำหนดค่าข้อมูลผ่านตัวแปรแล้วค่อย insert เรายังสามารถ insert ตรงๆโดยใส่ข้อมูลไปเลยก็ได้ โดยไม่ว่าจะใส่ผ่านตัวแปรหรือใส่ข้อมูลตรงๆเลยนั้น format ของข้อมูลนั้นจะคล้ายกับข้อมูลใน json คือเป็น field กับ value คู่กันจากในตัวอย่าง web ก็จะเป็นชื่อ field ส่วน google.com จะเป็น value ที่เก็บ ส่วน viewcount ก็จะเป็นชื่อ field เหมือนกันแล้วตัวเลขก็เป็น value ของ field viewcount นั้นเอง

นอกจากนั้นเมื่อทำการ insert ข้อมูลแล้วเราก็ลอง find ดูโดยเราสามารถใส่เงื่อนไขในการค้นหาได้โดยใช้ {field:operation : value} ได้โดยตัวอย่างในรูปนั้นจะใช้ $lt คือน้อยกว่า เงื่อนไขจึงเป็น viewcount ที่น้อยกว่า 600 นั้นเอง โดย operator หลักๆก็มี

  • $gt มากกว่า
  • $gte มากกว่าเท่ากับ
  • $lt น้อยกว่า
  • $lte น้อยกว่าเท่ากับ
  • $ne ไม่เท่ากับ
  • $in คล้ายกับ in ใน sql
  • $nin not in

crud-annotated-document

อันนี้ก็เป็นรูปตัวอย่าง format ของข้อมูลที่จะเก็บลงใน mongo db คือ field กับ value

 

ต่อมาก็จะเป็นคำสั่งในการ update ข้อมูลในฐานข้อมูล โดยใน mongo db ก็จะใช้คำสั่ง update แต่จะมีค่าที่ส่งเข้าไปค่อนข้างจะตายลาย เพราะฉะนั้นควรระวังเรื่อง วงเล็บกับเครื่องหมายปีกกาให้ดีนะครับ โดยในตัวอย่างในรูปข้างล่างนั้นจะใช้คำสั่ง

db.webData.update({web:”hotmail.com”},{$set:{viewcount:800}},{multi:true})

 

4

เมื่อลองคำสั่ง update จะเห็นว่า viewcount ของ web hotmail.com นั้นเปลี่ยนเป็น 800 แล้วโดยคำสั่ง update นั้นจะมีค่าที่ใช้นั้นจะแบ่งเป็นกลุ่มโดยใช้เครื่องหมายปีกกา {where}, {set},{multi update} โดยสั่งเกตจากรูปคำสั่ง update นั้น {} ชุดแรกจะเป็นเงื่อนไขข้อมูลที่ต้องการอัพเดตคือ field web ที่มีค่าเป็น hotmail.com จากนั้น {} ชุดที่ 2 จะใช้ operations $set ทำการเปลี่ยนค่า viewcount เป็น 800 ส่วน {} ชุดที่ 3 นั้นจะเป็นการบอกว่า multi update รึเปล่า เพราะเจ้า mongo db นั้นมันอยู่ในรูปแบบ document object ถ้าหาก update ทุกข้อมูลที่ตรงตามเงื่อนไขอาจจะผิดพลาดได้เลยมีการใช้คำสั่ง multi ว่าเป็น true หรือ false เพื่อให้แน่ใจในคำสั่งว่าจะ update ทุกข้อมูลที่ตรงเงื่อนไขหรือจะ update ที่ละข้อมูล

crud-annotated-mongodb-update

เพื่อให้ง่ายต่อการเข้าใจสามารถดูรูปนี้ประกอบได้ครับ

ต่อมาคำสั่ง remove คือคำสั่งลบข้อมูลนั้นเอง โดยค่าที่ส่งไปยังคำสั่งนี้ก็มีเพียงเงื่อนไขข้อมูลที่จะลบเท่านั้นเองครับ โดยจากตัวอย่างข้างล่างก็คือ field web มีค่าเป็น hotmail.com ให้ทำการลบทิ้ง

6

แต่ถ้าไม่ระบุเงื่อนไขในการลบก็คือลบหมดครับ เมื่อลองใช้คำสั่ง find จะไม่เจอข้อมูลอีกแล้วครับจะเห็นว่าเจ้า mongo db ให้ความสำคัญในการ update มากเพราะใน sql ไม่ว่าจะ update หรือ delete นั้นถ้าไม่ระบุเงื่อนไขก็จะทำกับข้อมูลทั้งหมด ส่วนเหตุผลว่าเจ้า mongo db นี้ให้ความสำคัญกับการ update อันนี้ผมก็ไม่ทราบเหมือนกันเพราะยังอ่านไม่เจอที่ครับ

5

นอกจาก remove แล้วในรูปนี้ยังมีการใช้คำสั่ง sort ตามหลัง find() ด้วยซึ่งมันก็เปรียนเหมือน order by ใน sql นั้นเอง โดยในรูปตัวอย่างนี้จะ เรียงตามค่า ใน field viewcount ถ้า -1 จะเรียงจากมากไปน้อยแต่ถ้าเป็น 1 จะเรียงจากน้อยไปมากครับ

คำสั่ง remove ใน mongo db

crud-annotated-mongodb-remove

เมื่อเทียบกับ sql

crud-annotated-sql-delete

สุดท้ายในบทความนี้ข้อเพิ่มเติมเกี่ยวกับการใช้คำสั่ง find โดยใช้เงื่อนไขและระบุ field ที่ต้องการดูได้โดยใช้ {} ชุดที่ 2 แล้วระบุเอา field ที่จะแสดงแล้วใส่ค่า 1 เพื่อเป็นการยืนยันว่าจะแสดง field นั้นดังรูปตังอย่างด้านล่าง

3

คำสั่ง find ใน mongodb

crud-annotated-mongodb-find

เมื่อเทียบกับ sql

crud-annotated-sql-select

ขอขอบคุณรูปประกอบจาก docs.mongodb.org

Leave a Reply

Your email address will not be published. Required fields are marked *