Độ bền dữ liệu Python - Mô-đun PyMongo

MongoDB là một tài liệu hướng NoSQLcơ sở dữ liệu. Nó là một cơ sở dữ liệu đa nền tảng được phân phối theo giấy phép công khai phía máy chủ. Nó sử dụng JSON giống như các tài liệu dưới dạng lược đồ.

Để cung cấp khả năng lưu trữ dữ liệu khổng lồ, nhiều hơn một máy chủ vật lý (được gọi là phân đoạn) được kết nối với nhau để đạt được khả năng mở rộng theo chiều ngang. Cơ sở dữ liệu MongoDB bao gồm các tài liệu.

Một tài liệu tương tự như một hàng trong bảng cơ sở dữ liệu quan hệ. Tuy nhiên, nó không có một lược đồ cụ thể. Tài liệu là tập hợp các cặp khóa-giá trị - tương tự như từ điển. Tuy nhiên, số lượng cặp kv trong mỗi tài liệu có thể khác nhau. Cũng giống như một bảng trong cơ sở dữ liệu quan hệ có khóa chính, tài liệu trong cơ sở dữ liệu MongoDB có một khóa đặc biệt được gọi là"_id".

Trước khi chúng ta xem cách cơ sở dữ liệu MongoDB được sử dụng với Python, chúng ta hãy hiểu sơ qua về cách cài đặt và khởi động MongoDB. Phiên bản cộng đồng và thương mại của MongoDB có sẵn. Phiên bản cộng đồng có thể được tải xuống từ www.mongodb.com/download-center/community .

Giả sử rằng MongoDB được cài đặt trong c: \ mongodb, máy chủ có thể được gọi bằng lệnh sau.

c:\mongodb\bin>mongod

Máy chủ MongoDB đang hoạt động ở cổng số 22017 theo mặc định. Cơ sở dữ liệu được lưu trữ trong thư mục data / bin theo mặc định, mặc dù vị trí có thể được thay đổi bằng tùy chọn –dbpath.

MongoDB có một bộ lệnh riêng được sử dụng trong MongoDB shell. Để gọi shell, hãy sử dụngMongo chỉ huy.

x:\mongodb\bin>mongo

Một dấu nhắc shell tương tự như MySQL hoặc SQLite shell, xuất hiện trước khi các lệnh NoSQL nguyên bản có thể được thực thi. Tuy nhiên, chúng tôi quan tâm đến việc kết nối cơ sở dữ liệu MongoDB với Python.

PyMongomô-đun đã được phát triển bởi chính MongoDB Inc để cung cấp giao diện lập trình Python. Sử dụng tiện ích pip nổi tiếng để cài đặt PyMongo.

pip3 install pymongo

Giả sử rằng máy chủ MongoDB đang hoạt động (với mongod lệnh) và đang nghe ở cổng 22017, trước tiên chúng ta cần khai báo một MongoClientvật. Nó kiểm soát tất cả các giao dịch giữa phiên Python và cơ sở dữ liệu.

from pymongo import MongoClient
client=MongoClient()

Sử dụng đối tượng máy khách này để thiết lập kết nối với máy chủ MongoDB.

client = MongoClient('localhost', 27017)

Một cơ sở dữ liệu mới được tạo bằng lệnh sau.

db=client.newdb

Cơ sở dữ liệu MongoDB có thể có nhiều bộ sưu tập, tương tự như các bảng trong cơ sở dữ liệu quan hệ. Một đối tượng Collection được tạo bởiCreate_collection() chức năng.

db.create_collection('students')

Bây giờ, chúng ta có thể thêm một hoặc nhiều tài liệu trong bộ sưu tập như sau:

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()

Để truy xuất các tài liệu (tương tự như truy vấn SELECT), chúng ta nên sử dụng find()phương pháp. Nó trả về một con trỏ với sự trợ giúp của tất cả các tài liệu có thể lấy được.

students=db['students']
docs=students.find()
for doc in docs:
   print (doc['Name'], doc['age'], doc['marks'] )

Để tìm một tài liệu cụ thể thay vì tất cả chúng trong một bộ sưu tập, chúng ta cần áp dụng phương thức filter to find (). Bộ lọc sử dụng các toán tử logic. MongoDB có tập hợp các toán tử logic của riêng nó như sau:

Sr.No Toán tử MongoDB & Toán tử logic truyền thống
1

$eq

bằng (==)

2

$gt

lớn hơn (>)

3

$gte

lớn hơn hoặc bằng (> =)

4

$in

nếu bằng bất kỳ giá trị nào trong mảng

5

$lt

nhỏ hơn (<)

6

$lte

nhỏ hơn hoặc bằng (<=)

7

$ne

không bằng (! =)

số 8

$nin

nếu không bằng bất kỳ giá trị nào trong mảng

Ví dụ, chúng tôi quan tâm đến việc lấy danh sách các sinh viên trên 21 tuổi. Sử dụng toán tử $ gt trong bộ lọc chofind() phương pháp như sau -

students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
   print (doc.get('Name'), doc.get('age'), doc.get('marks'))

Mô-đun PyMongo cung cấp update_one()update_many() các phương pháp sửa đổi một tài liệu hoặc nhiều tài liệu đáp ứng một biểu thức bộ lọc cụ thể.

Hãy để chúng tôi cập nhật thuộc tính dấu của tài liệu có tên là 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()