Python กับ MongoDB [part 2]
หลังจากที่เราได้ตั้งค่า mongoDB ไปใน Part ที่แล้ว ใน Part นี้จะเป็นการใช้งานเบื้องต้น นะครับ
มาเริ่ม Coding กันเลย
ก่อนอื่น ต้องสร้าง Database กับ Collection ก่อนนะครับ
โดย เข้าที่ Mongo Compass
ทำการ Create Database แล้วตั้งชื่อ DB name กับ Collection Name นะครับ
Collection คือ ข้อมูลย่อยๆนะครับ collection สามารถสร้างได้หลายอัน
เช่น BookDB มี collection ย่อย เป็น Type ต่างๆ Cartoon , Knowledge
มาสร้างกันเลย
เมื่อเข้าไปยัง Collection ก็สามารถ เพิ่ม Field ได้ปกติ นะครับ
โดยจะเป็นรูปแบบ Key — Value นะครับ
มาเริ่มใช้กับ python กัน
import pymongo as pm #import driver connector ในชื่อ pm
client = pm.MongoClient() #เชื่อมต่อ MongoDB
db = client['Book'] #เชื่อมต่อ กับ ฐานข้อมูล
print(db.collection_names()) #ลองแสดงผล ออกมาดูว่าใช่ไหม
Output:
ต่อไปมาลอง สร้างข้อมูลใน Collection กัน
Insert:
สามารถ Insert เป็น รูปแบบ Dict ได้ (Key-Value)
import pymongo as pm
client = pm.MongoClient()
db = client['Book']
collection = db['Cartoon']
collection.insert_one({'name':'Boruto'})
ลอง Query ออกมาดู
import pymongo as pm
client = pm.MongoClient()
db = client['Book']
collection = db['Cartoon']
collection.insert_one({'name':'Boruto'})
data = collection.find() # เราจะใช้คำสั่ง find() นะครับ สำหรับเรียกทั้งหมด
for i in data:
print(i)
ถ้าต้องการแค่ ตัวเดียว สามารถเรียก find_one() ได้นะครับ
เราจะสามารถ เลือก เฉพาะได้ โดย ใส่ parameter ไปดังนี้
data = collection.find({'name':'Boruto'}) #เรียกที่ name = Boruto
การแสดงออกมา สามารถเรียก Key ได้โดยตรงเช่น
เราต้องการแค่ name
ก็สามารถแสดง โดย i[‘name’] ได้เลย
ง่ายมั้ยครับ ต่อไปลอง Update
import pymongo as pm
client = pm.MongoClient()
db = client['Book']
collection = db['Cartoon']
collection.insert_one({'name':'Boruto'})
collection.find_one_and_update({'name':'Boruto'},{'$set':{'name':'Naruto'}})
data = collection.find()
for i in data:
print(i['name'])
“collection.find_one_and_update({‘name’:’Boruto’},{‘$set’:{‘name’:’Naruto’}})”
เราจะอัพเดท ตัวแรก ให้เป็น naruto ง่ายๆคือ ใช้ {‘$set’:{‘name’:’Naruto’}}
แค่นี่เราก็จะได้แล้ว
Delete ก็ใช้ delete_one กับ delete_many นะครับ
collection.delete_one({'name':'Naruto'})
ง่ายๆใช่มั้ยครับ นี่คือการใช้งานแบบเบื้องต้นนะครับ ก็จะมีการใช้งานเพิ่มเติมอีกมากมาย สามารถอ่านได้ที่ Doc เลยครับ
ขอบคุณครับ :)