BASIC MONGO และ การใช้ mongo กับ Golang [Part#1]
MONGO หลายคนคงรู้จักดีว่า เป็นฐานข้อมูลชนิดหนึ่ง ซึ่งมีคุณสมบัติพิเศษที่เป็นเป็น NOSql คือไม่มีความสัมพันธ์ของตาราง ซึ่งจะเก็บข้อมูลเป็นแบบ json หลายคนที่เพิ่งรู้จักกันคงจะสงสัย งั้นลองมาดูตัวอย่างของข้อมูล json กันค่า
ข้อมูลจะถูกเก็บลงใน “collection” หรือถ้าคนที่ใช้ sql กันมาอาจจะเข้าว่าเป็น table ก็ได้ค่ะ สังเกตว่า จะมี field “_id” เป็น primary key ทำหน้าที่เป็น id ให้กับ ข้อมูลนี้
เนื่องจากหลยคนน่าจะคุนเคยกับ sql กันมา ดังนั้นมาลองเปรียบเทียบศัพท์ต่างๆ ของ sql กับ no sql กันหน่อยค่า
เนื่องจาก blog นี้จะกล่าวถึงการใช้งานเบสิค และวิธีการใช้งานร่วมกับ golang ดังนั้น ทางผู้สนใจ ต้องทำการ install mongoDB และ tool สำหรับใช้งาน mongo ค่า
มาลองใช้งาน mongo ผ่าน docker กันเถอะ
เริ่มแรก รัน command mongo
docker run — name mongodb -d -p 27017:27017 mongo
ทำการ access เข้า docker mongo container
docker exec -it mongodb bash
เรามาลอง show database กันเถอะค่าาาาาา
คำสั่ง show database
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
แสดงว่าได้แล้วววววว เรามาลองสร้าง collection กันเถอะ !!!!
คำสั่งสร้าง database
>use testbasemongo
switched to db testbasemongo
PS. เราใช้คำสั่ง use mongo จะเข้าใจว่าเป็นการเรียกใช้ database ถ้ากรณีไม่มี database นั้นจะทำการ new ขึ้นมาให้ใหม่ แต่เอ๊ะ ถ้าเราไม่ทำการใส่ collection เข้าไปเลย จะไม่โชว์ database ตัวนั้น
โอเค เรามาทำการสร้าง collection กันเลย
คำสั่งสร้าง collection
>db.createCollection(“profile”);
{"ok": 1}
เสร็จเรียบร้อยยย collection profile ก็จะถูกสร้างงงงง
คำสั่ง show collection
>show collections;
profile
มาเริ่มมมม insert data กันเถอะ
คำสั่ง insert data
>db.profile.insert({name: “mr.mongo”, age: 18});
WriteResult({ "nInserted" : 1 })
ถ้าอยากจะ ดูผล ก็ใช้คำสั่ง
คำสั่ง query result
>db.profile.find();
{ "_id" : ObjectId("60741be08f50a3e236b78eb7"), "name" : "mr.mongo", "age" : 18 }
PS. คำสั่ง find จะใช้เป็น seach แบบ all ดังนั้นถ้าเราต้องการ search แบบ spacific ควรจะใส่ค่าลงใน value เช่นนี้
คำสั่ง query result แบบ filter ข้อมูล
>db.profile.find({name: “mr.mongo”});
{ "_id" : ObjectId("60741be08f50a3e236b78eb7"), "name" : "mr.mongo", "age" : 18 }
มีอีกหลายยยย เบลิคคำสั่ง ที่ สามารถนำมาลองเล่น
คำสั่ง remove
>db.profile.remove({name: “mr.mongo”})
WriteResult({ "nRemoved" : 1 })
คำสั่ง count
>db.profile.find().count()
0
คำสั่ง update
>db.profile.update({name: “mr.mongo”, {$set: {age: 60}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ยังมีอีกหลายคำสั่งที่น่าสนใจจจจจจ สามารถศึกษาเพิ่มเติมได้ที่
https://docs.mongodb.com/manual/reference/method/js-collection/
เรียนรู้การใช้ mongo basic กันไปแล้วว part หน้าจะเป็นการใช้ golanng ต่อกับ mongo db กันนค่า