Library Pymongo

              จริงๆ มันก็เป็นเรื่องคาบเกี่ยวทั้ง ภาษา กับ ดาต้าเบสนะครับ แต่เนื่องด้วยว่า หลักๆ เราจะใช้ภาษาไพธอน ในการเชื่อมต่อฐานข้อมูลของ MongoDB ดังนั้น ถ้าเอาไว้หมวดเดียวกับ MongoDB แล้วพอมีใช้ภาษาอื่น มันก็จะมีเพิ่มขึ้นเรื่อยๆ คงจะแปลกๆ เลยเอาไว้ในนี้ละกัน (ผมสร้าง environment Python 3.6 มาทดลองนะครับ)

  1. pip3 install pymongo ก่อนอื่นก็ติดตั้ง library pymongo เวอร์ชั่นปัจจุบันที่ใช้ตอนนี้คือ 3.12.0 นะครับ
  2. สร้าง script Python (ใครที่ยังไม่มีพื้นฐานส่วนนี้ดู ที่นี้ นะครับ)
  3. #!/usr/bin/env python3 บรรทัดแรกตามปกติ
  4. from pymongo import MongoClient เพื่อ import library ของ pymongo ไว้บนสุดนะครับ
  5. import pprint อันนี้สำหรับความสวยงามของการแสดงผลครับ
  6. client=MongoClient('mongodb://localhost:27017') กำหนดค่าที่ต้องใช้ในการเชื่อมต่อฐานข้อมูลนะครับ อันนี้ผมใช้ในเครื่องตัวเอง ยังไม่ได้ตั้งไอดี พาสอะไร เลยยังไม่ต้องใส่
  7. listDB=client.list_database_names() อันนี้ใช้ดูรายชื่อฐานข้อมูลทั้งหมดที่มีนะครับ (ดึงรายชื่อ -> ตัวแปร)
  8. print ("list Database : ",listDB) แล้วก็สั่งให้มันแสดงออกมาทาง terminal นะครับ (แน่นอนว่าไม่ได้อัพเดตตลอดเวลา จะดูการเปลี่ยนแปลงก็ต้องทำใหม่)
  9. useDB=client.test อันนี้เราต้องการจะเข้าใช้ฐานข้อมูล test นะครับ แต่ถ้ายังไม่มีฐานข้อมูลนั้นอยู่มันจะสร้างใหม่ให้ แต่ต้องมีข้อมูลใส่เข้าไปอย่างน้อยๆ หนึ่งอย่างก่อน มันถึงจะสร้างเสร็จสมบูรณ์ 
  10. useCollection=useDB.newCollection เริ่มสร้าง collection ใหม่ 
  11. insertOne=useCollection.insert_one({"NAME":"valenteer","ADDRESS":"world"}) ลองใส่ข้อมูลเข้าไป
  12. listCollection=useDB.list_collection_names() ดึงข้อมูลของ collection ทั้งหมดมาเก็บไว้ในตัวแปร
  13. print ("list Collection : ",listCollection) สั่งให้แสดงผลทาง terminal นะครับ
  14. listDoc=useCollection.find({}) อันนี้สั่งเก็บข้อมูล document จากฐานข้อมูลเข้าตัวแปรนะครับ
  15. for doc in listDoc: ให้ตัวแปร doc เป็นค่าใน listDoc ที่มีข้อมูลจากฐานข้อมูลนะครับ
        pprint.pprint ("document : ",doc) สั่งให้มันแสดงผลทีละข้อมูล ซึ่งเรามีอันเดียวนะครับ
  16. manyRow=[{"NAME" : "testScript1","OPTION" : "addManyRow1"}, ลองเอาเข้าหลาย Row
        {"NAME" : "testScript2","OPTION" : "addManyRow2"}] เอาทั้ง 2 Row ใส่ในตัวแปร
  17. insertMany=useCollection.insert_many(manyRow) เพิ่มเข้าไปในฐานข้อมูล ให้ใช้ print แบบ 14-15 เพื่อดูผลได้ ซึ่งหลังจากนี้จะขอข้ามส่วนแสดงผลละกัน
  18. findx=useCollection.find({"NAME" : "testScript1"}) ลองค้นหาแบบมีเงื่อนไขนะครับ ข้อมูลจะอยู่ใน findx ให้ใช้ print แบบข้อ 14. เพื่อดูผลได้ แต่แทน listDoc ด้วย findx นะครับ 
  19. findx=useCollection.find({"NAME": {"$regex": ".es."},"OPTION" : {"$regex": ".2"}}) อันนี้ลองแบบมีเงื่อนไขสองเงื่อนไขนะครับ (จริงๆ เรียกตรงๆ ก็ได้แหละ อันนี้เทสคำสั่งสองเงื่อนไขให้ดูเฉยๆ นะครับ) โดยเรายัดเข้าตัวแปรตัวเดิม ดังนั้นข้อมูลเก่าในข้อ 18. ก็จะถูกลบไป
  20. allDoc=useCollection.count_documents({}) อันนี้ใช้นับจำนวนของ Document ทั้งหมดนะครับ print (allDoc) ได้เลย เพราะมีข้อมูลเดียว
  21. upDoc=useCollection.update_many({"NAME": {"$regex": ".es."}},{"$set":{"OPTION" : 2}}) อัพเดตนะครับ คำสั่งใน () จะอิงมาคล้ายของ MongoDB เลย แต่มีต้องครอบ " " เพิ่มบางส่วน
  22. delDoc=useCollection.delete_many({"NAME": "valenteer"}) ลบข้อมูล
  23. useDB.newCollection.drop() ลบ collection ที่เราใช้นะครับ (อย่าตั้งชื่อฐานข้อมูล เหมือนกับชื่อ collection นะครับ เพราะมันลบได้เหมือนกัน ย้ำ)
            อนึ่งตัวแปรหลายๆ ตัวเรากำหนดค่ามาตั้งแต่ข้อแรกๆ แล้วใช้ต่อเนื่องกันมานะครับ อย่างข้อ 9-10 ใช้เยอะมาก ดังนั้นข้ามไม่ได้นะครับ 



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

โปรโมชั่นเน็ต TOT

โน๊ตบุ๊ค acer switch sa5-271 แบตบวม T^T

Blog นี้สร้างเพื่อ?