NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
12/03/2025
Lượt xem

Cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04

12/03/2025
12 phút đọc
Lượt xem

Đánh giá

5/5 - (140 bình chọn)

CRUD là các thao tác nền tảng mà bạn cần nắm vững khi làm việc với cơ sở dữ liệu, bao gồm tạo mới, đọc, cập nhật và xóa dữ liệu (Create, Read, Update, Delete). Trong bài viết này, mình sẽ hướng dẫn bạn cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04.

Những điểm chính

  • Tổng quan về MongoDB và PyMongo: MongoDB là cơ sở dữ liệu NoSQL document-oriented, sử dụng document giống JSON. Còn PyMongo là driver cho phép Python tương tác với MongoDB.
  • Yêu cầu cần đáp ứng: Để thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04, bạn cần 1 máy chủ Ubuntu 20.04, user non-root có quyền sudo, tường lửa thiết lập sẵn, Python 3, MongoDB đã cài đặt và cấu hình bảo mật.
  • Các thao tác cần thực hiện: Bắt đầu từ việc cài đặt PyMongo, kiểm thử Database và Collection và cuối cùng thực hiện các hoạt động CRUD.
  • Biết đến dịch vụ VPS Vietnix – Hiệu suất vượt trội, tăng tốc website của bạn.

Giới thiệu MongoDB và PyMongo

MongoDB là một chương trình cơ sở dữ liệu NoSQL document-oriented dùng document giống JSON để lưu trữ dữ liệu. Không giống mối quan hệ bảng được sử dụng trong cơ sở dữ liệu quan hệ, document giống JSON làm các schema đơn giản và linh hoạt hơn. Nhìn chung, cơ sở dữ liệu NoSQL có khả năng mở rộng theo chiều ngang phù hợp cho dữ liệu lớn và các ứng dụng thời gian thực.

Tổng quan về MongoDB và PyMongo
Tổng quan về MongoDB và PyMongo

Database driver hoặc connector là chương trình kết nối ứng dụng với một chương trình cơ sở dữ liệu. Để thực hiện các hoạt động CRUD trong MongoDB bằng Python thì cần có trình điều khiển để thiết lập kênh truyền thông. PyMongo là trình điều khiển được gợi ý để làm việc với MongoDB từ Python.

Chuẩn bị gì để thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04

Để thực hiện được các bước trong bài viết này, bạn cần chuẩn bị:

Nếu bạn cần sở hữu máy chủ để cài đặt MongoDB, Python 3, hãy tham khảo dịch vụ VPS AMD tại Vietnix. Các gói VPS AMD Vietnix có cấu hình từ 2GB RAM trở lên, đảm bảo đáp ứng được yêu cầu cho việc cài đặt các ứng dụng này. Bên cạnh đó, VPS Vietnix cũng hỗ trợ nhiều hệ điều hành khác nhau, trong đó Ubuntu 20.04. Điều này cho phép bạn lựa chọn hệ điều hành phù hợp với nhu cầu sử dụng của mình. Liên hệ ngay với Vietnix để được tư vấn lựa chọn VPS tốc độ cao và ổn định để triển khai các ứng dụng của bạn.

Bước 1: Cài đặt PyMongo

PyMongo là một bộ công cụ để làm việc với MongoDB. Công cụ này hỗ trợ database requests bằng cách sử dụng câu lệnh và interface từ Python. Để kích hoạt PyMongo, bạn hãy mở cửa sổ terminal trên Ubuntu và cài đặt từ Python Package Index. Bạn nên cài đặt PyMongo trong một môi trường ảo để có thể cô lập dự án Python.

pip3 install pymongo

pip3 là phiên bản Python 3 của pip. Đây là trình cài đặt gói phổ biến cho Python. Lưu ý rằng trong môi trường ảo Python 3, bạn có thể sử dụng lệnh pip thay vì pip3.

Bạn hãy mở trình thông dịch Python bằng lệnh dưới đây. Trình thông dịchmáy ảo hoạt động như một shell Unix. Đây là nơi bạn có thể thấy code chạy Python một cách trực quan.

python3

Bạn đang ở trong trình thông dịch khi nhận được output như sau:

Output

Python 3.8.5 (default, Jan 27 2021, 15:41:15)

[GCC 9.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

Tiếp theo, bạn nhập pymongo trong trình thông dịch Python:

import pymongo

Khi sử dụng lệnh import, bạn có thể truy cập vào module pymongo và mã code trong terminal. Lệnh import sẽ chạy mà không xảy ra những ngoại lệ. Ở dòng tiếp theo, nhập import getpass:

from getpass import getpass

getpass là một module để quản lý mật khẩu nhập vào. Module này yêu cầu bạn nhập mật khẩu và không hiển thị những gì bạn đã nhập. Module cung cấp cơ chế bảo mật để ngăn chặn hiển thị mật khẩu dưới dạng plaintext.

Ở đây, bạn thiết lập kết nối với MongoClient để kích hoạt MongoDB của cơ sở dữ liệu. Khai báo biến client để chứa MongoClient instance với các đối số là host, username, passwordauthMechanism:

client = pymongo.MongoClient('localhost', username='username', password=getpass('Password: '), authMechanism='SCRAM-SHA-256')

Để kết nối đến MongoDB khi bật chế độ xác thực, MongoClient yêu cầu bốn đối số:

  • host: Tên máy chủ nơi MongoDB được cài đặt. Trong trường hợp này, bạn đang sử dụng localhost.
  • username và password: Các thông tin xác thực được tạo sau khi bật chế độ xác thực trong MongoDB.
  • authMechanism – SCRAM-SHA-256: Là cơ chế xác thực mặc định được hỗ trợ bởi một nhóm cấu hình xác thực cho MongoDB 4.0 trở lên.

Sau khi đã thiết lập kết nối, bạn có thể tương tác với MongoDB của mình.

Bước 2: Kiểm thử Database và Collection

MongoDB hỗ trợ quản lý nhiều database độc lập trong MongoClient. Bạn có thể truy cập hoặc tạo database bằng cách sử dụng các kiểu thuộc tính trên MongoClient. Khai báo biến db và gán database mới như một thuộc tính của client:

db = client.workplace

Trong bài viết này, cơ sở dữ liệu workplace là nơi bạn theo dõi các hồ sơ của employee (nhân viên). Bạn sẽ thêm vào hồ sơ các mục như name (tên) và role (vai trò) của employee.

Tiếp theo, tạo một collection giống như các bảng trong cơ sở dữ liệu quan hệ. Các collection lưu trữ một nhóm các document trong MongoDB. Trong trình thông dịch Python, bạn tạo một collection có tên employees làm một thuộc tính của db. Sau đó, gán cho một biến có tên tương tự:

employees = db.employees

iconLưu ý

Trong MongoDB, database và collection được tạo ra chậm. Các đoạn code trên sẽ không được thực thi cho đến khi tạo ra document đầu tiên.

Bước 3: Thực hiện các hoạt động CRUD

Ở bước này, bạn sẽ thực hiện các hoạt động CRUD để thao tác với dữ liệu trong MongoDB. CRUD (Create, Retrieve, Update, Delete) là bốn hoạt động cơ bản trong lập trình để lưu trữ liên tục.

Để biểu diễn dữ liệu trong Python dưới dạng các document giống như JSON thì cần sử dụng từ điển. Hãy tạo một hồ sơ employee mẫu với các thuộc tính name và role:

employee = {

"name": "Sammy",

"role": "Developer"

}

Như bạn có thể thấy, từ điển Python rất giống cú pháp của document JSON. PyMongo chuyển đổi từ điển Python thành các document JSON để mở rộng khả năng lưu trữ dữ liệu.

Ở bước này, bạn thực hiện chèn hồ sơ employee vào trong collection có tên employees:

employees.insert_one(employee)

Lệnh này gọi phương thức insert_one() trên collection employees và cung cấp hồ sơ employee để chèn. Nếu thành công, kết quả chèn sẽ trả về output tương tự như dưới đây:

Output

<pymongo.results.InsertOneResult object at 0x7f8c5e3ed1c0>

Tiếp theo, để kiểm tra chèn bản ghi employee thành công và collection đang tồn tại, bạn hãy thực hiện truy vấn tìm employee vừa tạo:

employees.find_one({"name": "Sammy"})

Lệnh này gọi phương thức find_one() trên collection employees. Truy vấn theo thuộc tính name sẽ trả về một document phù hợp. Phương thức này rất hữu ích khi bạn chỉ có một document hoặc bạn chỉ quan tâm đến kết quả tìm thấy đầu tiên. Kết quả trả về sẽ có dạng như sau

Output

{'_id': ObjectId('606ae5b2358ddf640da46894'), 'name': 'Sammy', 'role': 'D

iconLưu ý

Khi một document được chèn vào, một khóa _id duy nhất được tự động thêm vào tài liệu nếu tài liệu chưa chứa khóa _id.

Nếu cần chỉnh sửa các document, bạn sử dụng phương thức update_one(). Phương thức update_one() yêu cầu hai đối số queryupdate:

  • query – {"name": "Sammy"} – PyMongo sẽ sử dụng tham số truy vấn này để tìm document có name là Sammy.
  • update – {"$set": {"role": "Technical Writer"}} – Tham số cập nhật thực hiện toán tử $set. Giá trị của một trường sẽ được thay thế bằng giá trị được chỉ định. Ở đây giá trị của trường role ban đầu sẽ được thay thế bằng Technical Writer.

Gọi phương thức update_one() trên collection employees:

employees.update_one({"name": "Sammy"}, { "$set": {"role": "Technical Writer"} })

Nếu chỉnh sửa thành công, phương thức update sẽ trả về một output có dạng như sau:

Output

<pymongo.results.UpdateResult object at 0x7f8c5e3eb940>

Để xóa một tài liệu, bạn sử dụng phương thức delete_one(). Phương thức này yêu cầu một tham số truy vấn để chỉ định tài liệu bạn muốn xóa. Sử dụng phương thức delete_one() như một thuộc tính của collection employees. Trong câu lệnh dưới, chỉ định tài liệu muốn xóa có name là Sammy.

employees.delete_one({"name": "Sammy"})

Phương thức này sẽ chỉ xóa mục bạn nhập vào và có trong collection employees.

Output

<pymongo.results.DeleteResult object at 0x7f8c5e3c8280>

Sử dụng phương thức find_one() một lần nữa để kiểm tra đã xóa thành công hồ sơ nhân viên của Sammy. Nếu không có gì được in ra trên console thì chứng tỏ bạn đã xóa thành công.

employees.find_one({"name": "Sammy"})

insert_one(), find_one(), update_one()delete_one() là những cách tuyệt vời để bạn thực hiện các thao tác CRUD trong MongoDB với PyMongo.

Trải nghiệm VPS chất lượng hàng đầu Việt Nam cùng Vietnix

Với 12 năm kinh nghiệm dày dặn trong lĩnh vực cung cấp dịch vụ VPS, Vietnix là một trong những nhà cung cấp hàng đầu tại Việt Nam, phục vụ hơn 100.000 dịch vụ cho khách hàng trên toàn quốc. Vietnix mang đến giải pháp VPS mạnh mẽ, ổn định và tối ưu hóa hiệu suất, đáp ứng mọi nhu cầu của doanh nghiệp và cá nhân.

VPS Vietnix được xây dựng trên nền tảng hạ tầng hiện đại, sử dụng ổ cứng SSD NVMe tốc độ cao, đảm bảo thời gian phản hồi nhanh chóng và hiệu suất vượt trội. Đội ngũ kỹ thuật viên chuyên nghiệp của Vietnix luôn sẵn sàng hỗ trợ 24/7, đảm bảo hệ thống của bạn hoạt động ổn định, uptime tới 99.9%.

Thông tin liên hệ:

  • Hotline: 18001093.
  • Email: sales@vietnix.com.vn.
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/.

Trên đây là cách thực hiện các thao tác CRUD trong MongoDB bằng PyMongo trên Ubuntu 20.04 này mà mình muốn chia sẻ để giúp bạn tạo, truy xuất, cập nhật và xóa document cơ bản. Hy vọng những thông tin này sẽ là nền tảng để bạn có thể thực hiện nhiều thao tác mức độ cao hơn như thực hiện các lệnh chèn hàng loạt, truy vấn nhiều document,… Ngoài ra, bạn có thể xem thêm các thao tác bảo mật MongoDB trong các bài viết dưới đây của mình:

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi cuối tháng 3
Nhanh tay, số lượng có hạn!
17/03/2025 - 31/03/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG