Persistensi Data Python - modul PyMongo
MongoDB berorientasi pada dokumen NoSQLdatabase. Ini adalah database lintas platform yang didistribusikan di bawah lisensi publik sisi server. Ini menggunakan JSON seperti dokumen sebagai skema.
Untuk menyediakan kemampuan untuk menyimpan data yang sangat besar, lebih dari satu server fisik (disebut shard) saling berhubungan, sehingga skalabilitas horizontal tercapai. Basis data MongoDB terdiri dari dokumen.
Dokumen dianalogikan dengan baris dalam tabel database relasional. Namun, ini tidak memiliki skema tertentu. Dokumen adalah kumpulan pasangan nilai kunci - mirip dengan kamus. Namun, jumlah pasangan kv di setiap dokumen mungkin berbeda. Sama seperti tabel dalam database relasional memiliki kunci utama, dokumen dalam database MongoDB memiliki kunci khusus yang disebut"_id".
Sebelum kita melihat bagaimana database MongoDB digunakan dengan Python, mari kita pahami secara singkat cara menginstal dan memulai MongoDB. Versi komunitas dan komersial MongoDB tersedia. Versi komunitas dapat diunduh dari www.mongodb.com/download-center/community .
Dengan asumsi bahwa MongoDB diinstal di c: \ mongodb, server dapat dipanggil menggunakan perintah berikut.
c:\mongodb\bin>mongod
Server MongoDB aktif di nomor port 22017 secara default. Database disimpan dalam folder data / bin secara default, meskipun lokasinya dapat diubah dengan opsi –dbpath.
MongoDB memiliki serangkaian perintahnya sendiri untuk digunakan di shell MongoDB. Untuk memanggil shell, gunakanMongo perintah.
x:\mongodb\bin>mongo
Shell prompt yang mirip dengan MySQL atau SQLite shell prompt, muncul sebelum perintah NoSQL asli dapat dijalankan. Namun, kami tertarik untuk menghubungkan database MongoDB ke Python.
PyMongomodul telah dikembangkan oleh MongoDB Inc sendiri untuk menyediakan antarmuka pemrograman Python. Gunakan utilitas pip terkenal untuk menginstal PyMongo.
pip3 install pymongo
Dengan asumsi bahwa server MongoDB aktif dan berjalan (dengan mongod perintah) dan mendengarkan di port 22017, pertama-tama kita perlu mendeklarasikan a MongoClientobyek. Ini mengontrol semua transaksi antara sesi Python dan database.
from pymongo import MongoClient
client=MongoClient()
Gunakan objek klien ini untuk membuat koneksi dengan server MongoDB.
client = MongoClient('localhost', 27017)
Database baru dibuat dengan perintah berikut.
db=client.newdb
Database MongoDB dapat memiliki banyak koleksi, mirip dengan tabel dalam database relasional. Objek Koleksi dibuat olehCreate_collection() fungsi.
db.create_collection('students')
Sekarang, kita dapat menambahkan satu atau lebih dokumen dalam koleksi sebagai berikut -
from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()
Untuk mengambil dokumen (mirip dengan query SELECT), kita harus menggunakan find()metode. Ini mengembalikan kursor dengan bantuan yang semua dokumen dapat diperoleh.
students=db['students']
docs=students.find()
for doc in docs:
print (doc['Name'], doc['age'], doc['marks'] )
Untuk menemukan dokumen tertentu alih-alih semuanya dalam koleksi, kita perlu menerapkan metode filter to find (). Filter menggunakan operator logika. MongoDB memiliki set operator logisnya sendiri seperti di bawah ini -
Sr Tidak | Operator MongoDB & operator logika tradisional |
---|---|
1 | $eq sama dengan (==) |
2 | $gt lebih besar dari (>) |
3 | $gte lebih dari atau sama dengan (> =) |
4 | $in jika sama dengan nilai apa pun dalam array |
5 | $lt kurang dari (<) |
6 | $lte kurang dari atau sama dengan (<=) |
7 | $ne tidak sama dengan (! =) |
8 | $nin jika tidak sama dengan nilai apa pun dalam array |
Misalnya, kami tertarik untuk mendapatkan daftar siswa yang berusia lebih dari 21 tahun. Menggunakan operator $ gt di filter untukfind() metode sebagai berikut -
students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
print (doc.get('Name'), doc.get('age'), doc.get('marks'))
Modul PyMongo menyediakan update_one() dan update_many() metode untuk memodifikasi satu dokumen atau lebih dari satu dokumen yang memenuhi ekspresi filter tertentu.
Mari kita perbarui atribut marks dari dokumen yang namanya Juhi.
from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()