BASIC MONGO และ การใช้ mongo กับ Golang [Part#1]

Tanaporn Kongsri
2 min readApr 16, 2021

--

MONGO หลายคนคงรู้จักดีว่า เป็นฐานข้อมูลชนิดหนึ่ง ซึ่งมีคุณสมบัติพิเศษที่เป็นเป็น NOSql คือไม่มีความสัมพันธ์ของตาราง ซึ่งจะเก็บข้อมูลเป็นแบบ json หลายคนที่เพิ่งรู้จักกันคงจะสงสัย งั้นลองมาดูตัวอย่างของข้อมูล json กันค่า

ข้อมูลจะถูกเก็บลงใน “collection” หรือถ้าคนที่ใช้ sql กันมาอาจจะเข้าว่าเป็น table ก็ได้ค่ะ สังเกตว่า จะมี field “_id” เป็น primary key ทำหน้าที่เป็น id ให้กับ ข้อมูลนี้

เนื่องจากหลยคนน่าจะคุนเคยกับ sql กันมา ดังนั้นมาลองเปรียบเทียบศัพท์ต่างๆ ของ sql กับ no sql กันหน่อยค่า

ref: http://sql-vs-nosql.blogspot.com/2013/11/indexes-comparison-mongodb-vs-mssqlserver.html

เนื่องจาก 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 กันนค่า

--

--