การจัดการฐานข้อมูลมีความสำคัญพอๆ กับการเขียนโปรแกรมและสร้างแอพพลิเคชัน เมื่อพูดถึง MongoDB หลายๆ คนอาจจะนึกถึง Node.js หรือ Python แต่รู้หรือไม่ว่าภาษา C++ ก็สามารถใช้ควบคุมและจัดการกับ MongoDB ได้เช่นกัน ในบทความนี้ เราจะพาไปทำความรู้จักกับการใช้ MongoDB ผ่านภาษา C++ และวิธีการเขียนโค้ดให้มีประสิทธิภาพ ทำความเข้าใจว่าโค้ดเหล่านั้นทำงานอย่างไร รวมทั้งยกตัวอย่าง use case ในโลกจริงเพื่อให้เห็นภาพการใช้งานได้ชัดเจนยิ่งขึ้น
ในการเริ่มต้นใช้งาน MongoDB กับ C++ คุณจะต้องติดตั้งไลบรารีที่จำเป็น เช่น `mongocxx` ซึ่งเป็นไดร์เวอร์อย่างเป็นทางการของ MongoDB สำหรับภาษา C++ หลังจากติดตั้งไลบรารีเรียบร้อยแล้ว คุณก็สามารถเขียนโค้ดเพื่อเชื่อมต่อกับฐานข้อมูล MongoDB ได้ดังตัวอย่างต่อไปนี้:
#include
#include
int main() {
mongocxx::instance instance{}; // This should be done only once.
mongocxx::client client{mongocxx::uri{"mongodb://localhost:27017"}};
mongocxx::database db = client["mydatabase"];
mongocxx::collection coll = db["mycollection"];
// Your MongoDB operations go here.
return 0;
}
ในโค้ดข้างต้น เราได้ทำการรวมไลบรารี mongocxx เข้ามาใช้ และเริ่มต้นด้วยการสร้าง instance ซึ่งจำเป็นต้องมีเพียงครั้งเดียวตลอดระยะเวลาที่ application ทำงาน ต่อจากนั้น สร้าง client ที่จะใช้เชื่อมต่อกับ MongoDB ในเครื่อง local โดยมีพอร์ตค่าปกติคือ 27017 และจากนั้นเลือกฐานข้อมูลและ collection ที่ต้องการทำงานด้วย
CRUD ย่อมาจาก Create, Read, Update, Delete ซึ่งเป็นการทำงานหลักของระบบฐานข้อมูลใดๆ ดูตัวอย่างการเขียนโค้ด CRUD กับ MongoDB ใน C++ ด้านล่าง:
bsoncxx::builder::stream::document document{};
auto collection = client["testdb"]["testcollection"];
document << "title" << "Learning MongoDB"
<< "views" << 1034
<< "likes" << 100
<< "tags" << bsoncxx::builder::stream::open_array
<< "C++" << "database" << "nosql"
<< bsoncxx::builder::stream::close_array;
collection.insert_one(document.view());
ในตัวอย่างนี้ เราใช้ `bsoncxx::builder::stream::document` สำหรับสร้าง BSON ซึ่งเป็นรูปแบบข้อมูลที่ MongoDB ใช้ และใช้ไลบรารี `mongocxx::collection` สำหรับการเข้าถึงคอลเลกชันและเพิ่มข้อมูลเข้าไป
auto cursor = collection.find({});
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
การอ่านข้อมูลจากคอลเลกชัน สามารถทำได้โดยการเรียกใช้ `collection.find({})` ซึ่งจะคืนค่ามาเป็น cursor ที่เราสามารถ iterate ผ่านข้อมูลแต่ละตัวได้
bsoncxx::builder::stream::document filter_builder, update_builder;
filter_builder << "title" << "Learning MongoDB";
update_builder << "$set" << bsoncxx::builder::stream::open_document
<< "views" << 2048
<< bsoncxx::builder::stream::close_document;
collection.update_one(filter_builder.view(), update_builder.view());
การอัปเดตเป็นการเปลี่ยนแปลงข้อมูลที่มีอยู่ในฐานข้อมูล ในตัวอย่างข้างต้น เราทำการอัปเดตจำนวนการเข้าชมเป็น 2048
bsoncxx::builder::stream::document filter_builder;
filter_builder << "title" << "Learning MongoDB";
collection.delete_one(filter_builder.view());
การลบข้อมูลจาก MongoDB สามารถทำได้โดยการกำหนดเงื่อนไข filter และส่งเข้าไปในฟังก์ชัน `delete_one` หรือ `delete_many` ขึ้นอยู่กับว่าคุณต้องการลบเอกสารเดียวหรือหลายเอกสาร
หนึ่งใน use case ที่สำคัญคือการจัดการข้อมูลหลังบ้านของเว็บแอพพลิเคชัน ที่เก็บข้อมูลผู้ใช้, ประวัติการใช้งาน, ข้อมูลสินค้า และการทำข้อมูลสถิติต่างๆ เช่น การใช้งาน MongoDB ผ่านภาษา C++ ในการจัดการระบบพิมพ์ตรวจสอบสิทธิ์การเข้าใช้, การอัปเดตข้อมูลสินค้า หรือการวิเคราะห์ยอดขาย เป็นต้น
การศึกษาการเขียนโปรแกรมเป็นสิ่งที่จำเป็นในโลกที่เทคโนโลยีครอบคลุมทุกสิ่งทุกอย่าง ถึงแม้ว่า MongoDB ใน C++ อาจจะฟังดูค่อนข้างท้าทาย แต่ผมเชื่อว่าด้วยความเข้าใจพื้นฐานและความพยายาม สิ่งที่ดูซับซ้อนก็จะกลายเป็นเรื่องง่ายได้ ที่ EPT (Expert-Programming-Tutor) เรามีหลักสูตรและผู้เชี่ยวชาญที่พร้อมจะขับเคลื่อนคุณผ่านทุกขั้นตอนไปยังการเป็นโปรแกรมเมอร์ที่มีทักษะสูง หากคุณสนใจที่จะประกาศศัพท์ในโลกของการเขียนโปรแกรมและ MongoDB อย่าลังเลที่จะส่งอีเมลหรือโทรหาเราเพื่อพูดคุยและสมัครหลักสูตรได้เลย! การเขียนโปรแกรมเป็นศิลปะที่เต็มไปด้วยความท้าทายและความสำเร็จ ไม่ว่าจะเป็นการเดินทางโปรแกรมมิ่งประเภทใดที่คุณคิดว่าควรจะเดิน ที่ EPT เราพร้อมที่จะเป็นส่วนหนึ่งของเส้นทางนั้น มาร่วมกันเรียนรู้และเติบโตกับเราสิคะ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: mongodb c++ database_management crud_operations mongocxx data_manipulation back-end_development programming web_applications database_connectivity
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM