MongoDB là một hệ thống cơ sở dữ liệu NoSQL (Non-SQL hoặc Non-Relational) phân tán, đa nền tảng và mã nguồn mở. Thay vì lưu trữ dữ liệu trong các bảng như cơ sở dữ liệu SQL truyền thống, MongoDB sử dụng các tài liệu linh hoạt để lưu trữ nhiều dạng dữ liệu khác nhau. MongoDB sử dụng định dạng BSON để lưu trữ dữ liệu, đó là định dạng JSON nhị phân.
MongoDB là một cơ sở dữ liệu NoSQL phân tán có tính khả dụng cao tích hợp, tự động chuyển đổi dự phòng và dự phòng dữ liệu, mở rộng theo chiều ngang thông qua phân mảnh trên các cụm phân tán và hỗ trợ triển khai địa lý đa vùng. MongoDB cũng cung cấp API truy vấn hỗ trợ các hoạt động CRUD (đọc và ghi), đường ống tổng hợp dữ liệu, tìm kiếm văn bản và truy vấn không gian địa lý.
Một số công ty đáng chú ý sử dụng MongoDB là Forbes, Toyota, SEGA, EA, Vodafone, Verizon và nhiều công ty khác.
Trong hướng dẫn này, bạn sẽ cài đặt Cơ sở dữ liệu NoSQL MongoDB trên máy chủ Rocky Linux 9. Bạn cũng sẽ tìm hiểu cách tối ưu hóa hệ thống Linux để triển khai MongoDB Server. Vào cuối hướng dẫn này, bạn cũng sẽ tìm hiểu các truy vấn cơ bản của MongoDB Database Server.
Bằng cách hoàn thành hướng dẫn này, bạn sẽ cài đặt MongoDB và tìm hiểu các hoạt động MongoDB cơ bản, chẳng hạn như quản lý người dùng, tạo cơ sở dữ liệu, chèn và truy xuất dữ liệu từ MongoDB, cập nhật dữ liệu trong MongoDB và cách xóa dữ liệu khỏi máy chủ MongoDB.
Trong bước đầu tiên, bạn sẽ thêm kho lưu trữ MongoDB chính thức vào hệ thống Rocky Linux của mình.
Để bắt đầu, hãy tạo một tệp kho lưu trữ mới '/etc/yum.repos.d/mongodb-org-6.0.repo' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau của kho lưu trữ MongoDB 6.0 vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Bây giờ hãy chạy lệnh dnf bên dưới để xác minh danh sách kho lưu trữ trên Rocky Linux của bạn hệ thống.
Bạn sẽ nhận được kết quả như thế này - Kho lưu trữ MongoDB 6.0 đã được thêm vào hệ thống Rocky Linux.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22151%22%3E%3C/svg%3E
Sau khi kho lưu trữ MongoDB đã được thêm vào hệ thống, bạn sẽ bắt đầu cài đặt MongoDB.
Chạy lệnh dnf bên dưới để cài đặt các gói MongoDB. 'mongodb-org' là gói chính của máy chủ MongoDB và 'mongodb-mongosh' là phiên bản mới của máy khách MongoDB, một giải pháp thay thế cho máy khách 'mongo'.
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E
Ngoài ra, bạn sẽ được nhắc chấp nhận khóa GPG của MongoDB. Nhập y và nhấn ENTER để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22687%22%20height=%22194%22%3E%3C/svg%3E
Sau khi máy chủ MongoDB được cài đặt, hãy chạy tiện ích lệnh systemctl bên dưới để khởi động dịch vụ MongoDB và xác minh dịch vụ để đảm bảo dịch vụ đang chạy.
Bạn sẽ nhận được kết quả như ảnh chụp màn hình bên dưới - Dịch vụ MongoDB đang chạy và được bật. Dịch vụ MongoDB sẽ tự động chạy khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22275%22%3E%3C/svg%3E
Bây giờ máy chủ MongoDB đang chạy, bạn sẽ thiết lập và tối ưu hóa hệ thống Rocky Linux của mình cho triển khai MongoDB trong bước tiếp theo.
Bạn có thể sử dụng các phương pháp khác nhau để vô hiệu hóa Transparent Huge Pages (THP). Trong hướng dẫn này, bạn sẽ vô hiệu hóa THP vĩnh viễn thông qua dịch vụ systemd.
Tạo tệp dịch vụ systemd mới '/etc/systemd/system/disable-thp.service' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào file.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Tiếp theo, chạy tiện ích lệnh systemctl bên dưới để tải lại trình quản lý systemd và áp dụng tệp dịch vụ mới.
Sau đó, khởi động và kích hoạt dịch vụ systemd 'disable-thp' bằng lệnh systemctl bên dưới lệnh.
Khi dịch vụ 'disable-thp' được bật, Transparent Huge Pages (THP) sẽ tự động bị vô hiệu hóa mỗi khi khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22204%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ tăng giới hạn trên hệ thống của mình cho MongoDB triển khai. Ulimit mặc định cho hệ thống Linux chung là '1024' và MongoDB yêu cầu ít nhất '64000'.
Để thay đổi ulimit, hãy tạo tệp cấu hình mới '/etc/security/limits.d/mongodb.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào tệp. Với những dòng này, bạn sẽ thiết lập ulimit cho người dùng cụ thể 'mongod', đây là người dùng mặc định chạy máy chủ MongoDB.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Sau khi cấu hình ulimit, giờ đây bạn sẽ tăng bộ nhớ ảo tối đa trên máy chủ MongoDB của mình thông qua tệp '/etc/sysctl.conf'.
Mở tệp cấu hình '/etc/sysctl.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Thêm các dòng sau vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22569%22%20height=%22222%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại hệ thống Rocky Linux của bạn và áp dụng các thay đổi hệ thống mà bạn đã thiết lập.
Với lệnh này, máy chủ MongoDB của bạn hiện sẽ chạy với THP bị vô hiệu hóa, ulimit '64000' cho người dùng MongoDB và bộ nhớ ảo tối đa '262144'. Ở bước tiếp theo, bạn sẽ thiết lập người dùng quản trị MongoDB, sau đó tìm hiểu những điều cơ bản về hoạt động của MongoDB.
Đầu tiên, hãy đăng nhập vào máy chủ MongoDB thông qua lệnh 'mongosh' bên dưới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22327%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để vô hiệu hóa giám sát MongoDB, được bật trên cài đặt MongoDB mặc định.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22448%22%20height=%22103%22%3E%3C/svg%3E
Tiếp theo, chuyển sang cơ sở dữ liệu mặc định 'admin' bằng cách sử dụng lệnh bên dưới truy vấn.
Bây giờ hãy tạo một người dùng quản trị MongoDB mới bằng truy vấn MongoDB sau. Ngoài ra, hãy đảm bảo thay đổi tên người dùng trong truy vấn bên dưới.
Ví dụ này sẽ tạo một người dùng quản trị mới 'myAliceAdmin'. Với truy vấn 'passwordPrompt()', bạn sẽ thiết lập mật khẩu thông qua lời nhắc, thay vì sử dụng văn bản thuần túy bên trong truy vấn.
Khi người dùng mới được tạo, bạn sẽ nhận được đầu ra như '{ ok: 1 }'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22572%22%20height=%22391%22%3E%3C/svg%3E
Bây giờ hãy nhấn Ctrl+d hoặc nhập 'quit' để thoát khỏi shell MongoDB.
Tiếp theo, hãy mở tệp cấu hình MongoDB '/etc/mongod.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Bỏ chú thích tham số 'security' và thêm dòng 'authorization: enabled' để bật xác thực và ủy quyền MongoDB.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Cuối cùng, hãy chạy lệnh systemctl bên dưới để khởi động lại dịch vụ MongoDB và áp dụng thay đổi.
Bây giờ người dùng quản trị MongoDB đã được tạo và quyền ủy quyền và xác thực đã được bật trên máy chủ MongoDB. Tiếp theo, bạn sẽ xác minh xác thực người dùng bằng hai phương pháp khác nhau.
Đăng nhập vào shell MongoDB thông qua lệnh 'mongosh' bên dưới.
Sau khi đăng nhập, hãy chạy truy vấn bên dưới để xác thực với tư cách là người dùng quản trị MongoDB 'myAliceAdmin'. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu quản trị viên MongoDB của bạn.
Khi xác thực thành công, bạn sẽ nhận được đầu ra như '{ ok: 1 }'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22370%22%3E%3C/svg%3E
Một phương pháp khác để đăng nhập vào shell MongoDB và xác thực bằng lệnh mongosh đơn bên dưới. Nhập mật khẩu của bạn khi được nhắc.
Với lệnh này, bạn sẽ kết nối với máy chủ MongoDB chạy trên cổng 27017 và xác thực với cơ sở dữ liệu 'admin' bằng tên người dùng 'myAliceAdmin'.
Bạn sẽ được đăng nhập vào shell MongoDB khi xác thực thành công.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22212%22%3E%3C/svg%3E
Máy chủ MongoDB của bạn hiện được bảo mật bằng xác thực người dùng và mật khẩu. Ngoài ra, bạn đã tạo một người dùng quản trị viên trên MongoDB. Tiếp theo, bạn sẽ tìm hiểu cách tạo một người dùng MongoDB mới có thể được sử dụng cho các ứng dụng của mình.
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã đăng nhập vào shell MongoDB. Sau đó, chạy lệnh bên dưới để chuyển sang cơ sở dữ liệu mới 'testdb' và tạo một người dùng MongoDB mới.
Trong ví dụ này, bạn sẽ tạo một người dùng MongoDB mới 'myTestUser' với vai trò 'readWrite' cho cơ sở dữ liệu 'testdb' và vai trò 'read'-only cho cơ sở dữ liệu 'reporting'.
Khi được nhắc, hãy nhập mật khẩu mới cho người dùng mới 'myTestUser'. Và bạn sẽ nhận được kết quả đầu ra '{ ok: 1 }', điều này có nghĩa là người dùng mới 'myTestUser' đã được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22570%22%20height=%22344%22%3E%3C/svg%3E
Tiếp theo, chuyển sang cơ sở dữ liệu 'admin' và chạy truy vấn bên dưới để xác minh danh sách người dùng trên MongoDB của bạn máy chủ.
Bạn sẽ thấy đầu ra tương tự như thế này - Người dùng mới 'myTestUser' được tạo với vai trò 'readWrite' đối với cơ sở dữ liệu 'testdb' và vai trò 'read' đối với cơ sở dữ liệu reporting.
Bây giờ hãy nhấn Ctrl+d để thoát và thoát khỏi shell MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22623%22%20height=%22529%22%3E%3C/svg%3E
Để đảm bảo rằng người dùng MongoDB 'myTestUser' đã được tạo, bây giờ bạn sẽ đăng nhập vào MongoDB thông qua 'myTestUser'.
Chạy lệnh bên dưới để đăng nhập vào MongoDB thông qua người dùng 'myTestUser'. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu của bạn.
Sau khi đăng nhập, hãy chạy truy vấn MongoDB bên dưới để xác minh kết nối hiện tại của bạn.
Bạn sẽ thấy đầu ra tương tự như ảnh chụp màn hình này - Bây giờ bạn đã kết nối và xác thực với máy chủ MongoDB thông qua người dùng 'myTestUser'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22668%22%20height=%22500%22%3E%3C/svg%3E
Bây giờ bạn đã tạo một người dùng MongoDB mới, tiếp theo bạn sẽ học cách chèn và truy xuất dữ liệu trong MongoDB.
Trước tiên, hãy đảm bảo rằng bạn đã đăng nhập vào máy chủ MongoDB bằng người dùng mới của mình, ví dụ này là 'myTestUser'. Sau đó chuyển sang cơ sở dữ liệu 'testdb' thông qua truy vấn 'use' bên dưới.
Bây giờ shell MongoDB của bạn sẽ trở thành 'testdb>'.
Tiếp theo, chạy truy vấn bên dưới để tạo một bộ sưu tập mới và chèn dữ liệu mới vào đó. Trong ví dụ này, bạn sẽ tạo một bộ sưu tập mới 'movies' và chèn dữ liệu mới thông qua truy vấn 'insertOne', có thể được sử dụng để chèn chỉ một dữ liệu vào bộ sưu tập.
Bây giờ bạn sẽ nhận được đầu ra như 'acknowledged: ok', có nghĩa là dữ liệu mới đã được thêm vào và bộ sưu tập mới đã được tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22433%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để xác minh danh sách các bộ sưu tập trên cơ sở dữ liệu 'testdb' và hiển thị dữ liệu có sẵn trong 'testdb'.
Truy vấn 'show collection' sẽ hiển thị cho bạn danh sách các bộ sưu tập/bảng trên cơ sở dữ liệu hiện tại và truy vấn 'find' sẽ hiển thị dữ liệu có sẵn trên cơ sở dữ liệu của bạn. Bạn cũng có thể lọc các trường cụ thể thông qua truy vấn 'tìm'.
Bạn sẽ nhận được kết quả đầu ra như thế này - Bộ sưu tập 'phim' có sẵn trong cơ sở dữ liệu 'testdb'. Ngoài ra, bạn sẽ thấy dữ liệu mới mà bạn đã thêm vào, đó là
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22626%22%20height=%22408%22%3E%3C/svg%3E
Tiếp theo, bạn cũng có thể thêm nhiều dữ liệu cùng lúc thông qua truy vấn 'insertMany'. Chạy truy vấn bên dưới để chèn hai dữ liệu vào bộ sưu tập 'movies' thông qua truy vấn 'insertMany'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22678%22%20height=%22647%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh bên dưới Truy vấn 'find' để lấy dữ liệu của bạn. Với truy vấn này, bạn sẽ lấy dữ liệu bằng bộ lọc 'directors: "Peter Jackson"'.
Bạn sẽ nhận được kết quả như thế này - Bất kỳ phim nào có 'directors: "Peter Jackson"' sẽ được hiển thị trên thiết bị đầu cuối của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666%22%20height=%22560%22%3E%3C/svg%3E
Tiếp theo, bạn cũng có thể chỉ định các điều kiện trong truy vấn 'find' bằng cách sử dụng toán tử truy vấn.
Chạy truy vấn bên dưới để truy xuất bất kỳ dữ liệu nào trong đó 'genres' là 'Action' và/hoặc 'Family'. Toán tử '$in' có thể được sử dụng để truy xuất dữ liệu khớp với bất kỳ giá trị nào được chỉ định trong một mảng.
Bây giờ bạn sẽ nhận được đầu ra như thế này:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22668%22%20height=%22582%22%3E%3C/svg%3E
Một toán tử truy vấn khác mà bạn có thể thử là '$gte', có thể được sử dụng để truy xuất dữ liệu lớn hơn hoặc bằng một giá trị đã chỉ định.
Trước đó, hãy chạy truy vấn bên dưới để chèn dữ liệu mới vào bộ sưu tập 'phim'.
Bây giờ hãy chạy truy vấn bên dưới để truy xuất dữ liệu bằng toán tử truy vấn '$gte'. Lệnh này sẽ lấy bất kỳ phim nào có 'thể loại: "Hành động"' được phát hành sau hoặc bằng 'đến năm 2001'.
Bạn sẽ nhận được kết quả tương tự như sau - Trong ví dụ này, bạn sẽ nhận được hai phim phát hành sau hoặc bằng năm 2001 với thể loại 'Hành động', đó là 'Chúa tể những chiếc nhẫn' và 'Transformers'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22658%22%20height=%22619%22%3E%3C/svg%3E
Với những điều này trong đầu, giờ đây bạn đã học cách chèn và truy xuất dữ liệu trong MongoDB. Bạn đã học truy vấn cơ bản 'insertOne' để thêm một dữ liệu và truy vấn 'insertMany' để thêm một số dữ liệu cùng một lúc.
Sau đó, bạn cũng đã học cách sử dụng cơ bản của truy vấn 'find' để truy xuất dữ liệu từ MongoDB. Ngoài ra, bạn cũng đã học cách sử dụng các truy vấn toán tử '$in' và '$gte' trong MongoDB.
Trong bước tiếp theo, bạn sẽ học cách cập nhật dữ liệu trong các bộ sưu tập MongoDB.
Để cập nhật dữ liệu trong MongoDB, bạn có thể sử dụng nhiều phương thức và truy vấn. Trong ví dụ này, bạn sẽ học cách sử dụng các truy vấn 'updateOne' và 'replaceOne'. Truy vấn 'updateOne' có thể được sử dụng để cập nhật một trường duy nhất trong tài liệu, trong khi 'replaceOne' sẽ thay thế toàn bộ tài liệu.
Chạy truy vấn bên dưới để cập nhật dữ liệu bằng truy vấn 'updateOne'. Trong ví dụ này, bạn sẽ cập nhật 'xếp loại: "PG-13"' thành 'xếp loại: "R"' trên phim 'Transformers'.
Bạn sẽ nhận được kết quả đầu ra như 'matchedCount: 1' và 'modifiedCount: 1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22579%22%20height=%22314%22%3E%3C/svg%3E
Bây giờ hãy xác minh dữ liệu mới bằng truy vấn sau. Bạn sẽ thấy dữ liệu về bộ phim 'Transformers' đã được cập nhật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22623%22%20height=%22329%22%3E%3C/svg%3E
Tiếp theo, chạy truy vấn 'replaceOne' bên dưới để thay thế dữ liệu khớp đầu tiên trong bộ lọc và thay thế toàn bộ tài liệu bằng dữ liệu mới. Trong ví dụ này, bạn sẽ thay thế toàn bộ tài liệu về bộ phim 'Transformers' bằng dữ liệu mới.
Bây giờ bạn sẽ nhận được kết quả như thế này.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để xác minh dữ liệu mới được cập nhật trên MongoDB của bạn.
Bạn sẽ nhận được kết quả tương tự như thế này - Phim 'Transformers' đã bị xóa/thay thế bằng phim mới 'Transformers: Dark of the Moon'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22379%22%3E%3C/svg%3E
Chạy lệnh bên dưới để xóa dữ liệu khỏi bộ sưu tập MongoDB. Trong ví dụ này, bạn sẽ xóa toàn bộ tài liệu 'Transformers: Dark of the Moon' thông qua truy vấn 'deleteMany'.
Bạn sẽ nhận được kết quả đầu ra như sau 'deletedCount: 1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22726%22%20height=%22142%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để xóa một tài liệu duy nhất thông qua truy vấn 'deleteOne' bên dưới. Thao tác này sẽ xóa dữ liệu khớp đầu tiên trong bộ lọc.
Trong ví dụ này, bạn sẽ xóa tài liệu đầu tiên khớp với 'cast: "Ian McKellen"'.
Dưới đây là đầu ra trước và sau khi dữ liệu bị xóa.
Trước khi xóa - Bạn sẽ thấy hai bộ phim có 'cast: "Ian McKellen"'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22625%22%20height=%22553%22%3E%3C/svg%3E
Sau khi tài liệu bị xóa - bạn sẽ chỉ thấy một bộ phim có 'diễn viên: "Ian McKellen"'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22427%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ tìm hiểu cách xóa người dùng và cơ sở dữ liệu trong MongoDB. Để xóa người dùng trong MongoDB, bạn phải có vai trò 'root' trên người dùng quản trị MongoDB của mình.
Chạy lệnh bên dưới để xác thực với tư cách là người dùng quản trị MongoDB 'myAliceAdmin' và nhập mật khẩu của bạn.
Sau khi được xác thực với tư cách là người dùng quản trị MongoDB, hãy chạy truy vấn bên dưới để cấp cho người dùng quản trị 'root' vai trò.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22529%22%20height=%22234%22%3E%3C/svg%3E
Bây giờ hãy chuyển sang 'testdb' và xóa người dùng trong cơ sở dữ liệu 'testdb' thông qua truy vấn bên dưới. Thao tác này sẽ xóa người dùng 'myTestUser' khỏi MongoDB.
Bạn sẽ nhận được kết quả như sau '{ n:1, ok: 1 }'.
Tiếp theo, chạy truy vấn bên dưới để xóa/loại bỏ cơ sở dữ liệu 'testdb'.
Và bạn sẽ nhận được kết quả như sau '{ ok: 1, dropped: 'testdb' }'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22592%22%20height=%22306%22%3E%3C/svg%3E
Bây giờ 'testdb' và người dùng trong cơ sở dữ liệu sẽ bị xóa.
Chạy truy vấn bên dưới để chuyển sang cơ sở dữ liệu 'admin' và xác minh danh sách cơ sở dữ liệu trên máy chủ MongoDB của bạn. Bạn sẽ thấy cơ sở dữ liệu 'testdb' đã bị xóa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22242%22%20height=%22211%22%3E%3C/svg%3E
Cuối cùng, chạy truy vấn bên dưới để hiển thị và liệt kê người dùng trên MongoDB.
Bạn sẽ nhận được kết quả như thế này - Việc sử dụng 'myTestUser' đã bị xóa khỏi máy chủ MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22627%22%3E%3C/svg%3E
Trong quá trình này, bạn đã học cách sử dụng cơ bản lệnh Mongosh để kết nối và quản lý máy chủ MongoDB. Và học các truy vấn MongoDB cơ bản để tạo người dùng, tạo cơ sở dữ liệu, chèn và truy xuất dữ liệu, cập nhật dữ liệu và xóa/gỡ dữ liệu khỏi máy chủ MongoDB.
Với hướng dẫn này, bạn có thể tìm hiểu thêm về truy vấn MongoDB trong Tài liệu MongoDB. Ngoài ra, nếu bạn muốn triển khai MongoDB trong một triển khai lớn, bạn có thể thử bật phân mảnh cho phép bạn thiết lập khả năng mở rộng theo chiều ngang trong cụm MongoDB.
MongoDB là một cơ sở dữ liệu NoSQL phân tán có tính khả dụng cao tích hợp, tự động chuyển đổi dự phòng và dự phòng dữ liệu, mở rộng theo chiều ngang thông qua phân mảnh trên các cụm phân tán và hỗ trợ triển khai địa lý đa vùng. MongoDB cũng cung cấp API truy vấn hỗ trợ các hoạt động CRUD (đọc và ghi), đường ống tổng hợp dữ liệu, tìm kiếm văn bản và truy vấn không gian địa lý.
Một số công ty đáng chú ý sử dụng MongoDB là Forbes, Toyota, SEGA, EA, Vodafone, Verizon và nhiều công ty khác.
Trong hướng dẫn này, bạn sẽ cài đặt Cơ sở dữ liệu NoSQL MongoDB trên máy chủ Rocky Linux 9. Bạn cũng sẽ tìm hiểu cách tối ưu hóa hệ thống Linux để triển khai MongoDB Server. Vào cuối hướng dẫn này, bạn cũng sẽ tìm hiểu các truy vấn cơ bản của MongoDB Database Server.
Bằng cách hoàn thành hướng dẫn này, bạn sẽ cài đặt MongoDB và tìm hiểu các hoạt động MongoDB cơ bản, chẳng hạn như quản lý người dùng, tạo cơ sở dữ liệu, chèn và truy xuất dữ liệu từ MongoDB, cập nhật dữ liệu trong MongoDB và cách xóa dữ liệu khỏi máy chủ MongoDB.
Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn phải đáp ứng các yêu cầu sau:- Máy chủ Rocky Linux 9 - Ví dụ này sử dụng Rocky Linux có tên máy chủ là 'mongodb-rocky'.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Thêm kho lưu trữ MongoDB
MongoDB chỉ khả dụng trên kho lưu trữ MongoDB chính thức. Để cài đặt, bạn phải thêm kho lưu trữ MongoDB vào hệ thống của mình. Tại thời điểm viết bài này, phiên bản mới nhất của MongoDB là v6.0, phiên bản mà bạn sẽ sử dụng cho phần còn lại của hướng dẫn này.Trong bước đầu tiên, bạn sẽ thêm kho lưu trữ MongoDB chính thức vào hệ thống Rocky Linux của mình.
Để bắt đầu, hãy tạo một tệp kho lưu trữ mới '/etc/yum.repos.d/mongodb-org-6.0.repo' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/yum.repos.d/mongodb-org-6.0.repo
Mã:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
Bây giờ hãy chạy lệnh dnf bên dưới để xác minh danh sách kho lưu trữ trên Rocky Linux của bạn hệ thống.
Mã:
sudo dnf repolist
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22151%22%3E%3C/svg%3E
Sau khi kho lưu trữ MongoDB đã được thêm vào hệ thống, bạn sẽ bắt đầu cài đặt MongoDB.
Cài đặt MongoDB Server và Mongosh
Trong bước này, bạn sẽ cài đặt máy chủ MongoDB trên máy chủ Rocky Linux. Sau đó, bạn sẽ khởi động và kích hoạt dịch vụ MongoDB để chạy tự động khi khởi động.Chạy lệnh dnf bên dưới để cài đặt các gói MongoDB. 'mongodb-org' là gói chính của máy chủ MongoDB và 'mongodb-mongosh' là phiên bản mới của máy khách MongoDB, một giải pháp thay thế cho máy khách 'mongo'.
Mã:
sudo dnf install mongodb-org mongodb-mongosh
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E
Ngoài ra, bạn sẽ được nhắc chấp nhận khóa GPG của MongoDB. Nhập y và nhấn ENTER để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22687%22%20height=%22194%22%3E%3C/svg%3E
Sau khi máy chủ MongoDB được cài đặt, hãy chạy tiện ích lệnh systemctl bên dưới để khởi động dịch vụ MongoDB và xác minh dịch vụ để đảm bảo dịch vụ đang chạy.
Mã:
sudo systemctl start mongod
sudo systemctl status mongod
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22275%22%3E%3C/svg%3E
Bây giờ máy chủ MongoDB đang chạy, bạn sẽ thiết lập và tối ưu hóa hệ thống Rocky Linux của mình cho triển khai MongoDB trong bước tiếp theo.
Thiết lập hệ thống
Trong bước này, bạn sẽ thiết lập máy chủ Rocky Linux của mình và tối ưu hóa nó cho triển khai MongoDB. Điều này bao gồm vô hiệu hóa Transparent Huge Pages (THP), tăng ulimit và tăng bộ nhớ ảo tối đa thông qua tệp sysctl.conf.Bạn có thể sử dụng các phương pháp khác nhau để vô hiệu hóa Transparent Huge Pages (THP). Trong hướng dẫn này, bạn sẽ vô hiệu hóa THP vĩnh viễn thông qua dịch vụ systemd.
Tạo tệp dịch vụ systemd mới '/etc/systemd/system/disable-thp.service' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/systemd/system/disable-thp.service
Mã:
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
Tiếp theo, chạy tiện ích lệnh systemctl bên dưới để tải lại trình quản lý systemd và áp dụng tệp dịch vụ mới.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl enable disable-thp
sudo systemctl start disable-thp
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22204%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ tăng giới hạn trên hệ thống của mình cho MongoDB triển khai. Ulimit mặc định cho hệ thống Linux chung là '1024' và MongoDB yêu cầu ít nhất '64000'.
Để thay đổi ulimit, hãy tạo tệp cấu hình mới '/etc/security/limits.d/mongodb.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/security/limits.d/mongodb.conf
Mã:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
Sau khi cấu hình ulimit, giờ đây bạn sẽ tăng bộ nhớ ảo tối đa trên máy chủ MongoDB của mình thông qua tệp '/etc/sysctl.conf'.
Mở tệp cấu hình '/etc/sysctl.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/sysctl.conf
Mã:
fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22569%22%20height=%22222%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại hệ thống Rocky Linux của bạn và áp dụng các thay đổi hệ thống mà bạn đã thiết lập.
Mã:
sudo reboot
Thiết lập Quản trị cho MongoDB
Lúc này, bạn đã chạy MongoDB trên máy chủ Rocky Linux đã được tối ưu hóa. Và trong bước này, bạn sẽ bảo mật triển khai MongoDB của mình bằng cách tạo một người dùng quản trị mới và bật xác thực và ủy quyền trên máy chủ MongoDB.Đầu tiên, hãy đăng nhập vào máy chủ MongoDB thông qua lệnh 'mongosh' bên dưới.
Mã:
mongosh
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22327%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để vô hiệu hóa giám sát MongoDB, được bật trên cài đặt MongoDB mặc định.
Mã:
db.disableFreeMonitoring()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22448%22%20height=%22103%22%3E%3C/svg%3E
Tiếp theo, chuyển sang cơ sở dữ liệu mặc định 'admin' bằng cách sử dụng lệnh bên dưới truy vấn.
Mã:
use admin
Ví dụ này sẽ tạo một người dùng quản trị mới 'myAliceAdmin'. Với truy vấn 'passwordPrompt()', bạn sẽ thiết lập mật khẩu thông qua lời nhắc, thay vì sử dụng văn bản thuần túy bên trong truy vấn.
Mã:
db.createUser(
{
user: "myAliceAdmin",
pwd: passwordPrompt(),
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22572%22%20height=%22391%22%3E%3C/svg%3E
Bây giờ hãy nhấn Ctrl+d hoặc nhập 'quit' để thoát khỏi shell MongoDB.
Tiếp theo, hãy mở tệp cấu hình MongoDB '/etc/mongod.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/mongod.conf
Mã:
security:
authorization: enabled
Cuối cùng, hãy chạy lệnh systemctl bên dưới để khởi động lại dịch vụ MongoDB và áp dụng thay đổi.
Mã:
sudo systemctl restart mongod
Đăng nhập vào shell MongoDB thông qua lệnh 'mongosh' bên dưới.
Mã:
mongosh
Mã:
use admin
db.auth("myAliceAdmin", passwordPrompt())
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22370%22%3E%3C/svg%3E
Một phương pháp khác để đăng nhập vào shell MongoDB và xác thực bằng lệnh mongosh đơn bên dưới. Nhập mật khẩu của bạn khi được nhắc.
Với lệnh này, bạn sẽ kết nối với máy chủ MongoDB chạy trên cổng 27017 và xác thực với cơ sở dữ liệu 'admin' bằng tên người dùng 'myAliceAdmin'.
Mã:
mongosh --port 27017 --authenticationDatabase \
"admin" -u "myAliceAdmin" -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22212%22%3E%3C/svg%3E
Máy chủ MongoDB của bạn hiện được bảo mật bằng xác thực người dùng và mật khẩu. Ngoài ra, bạn đã tạo một người dùng quản trị viên trên MongoDB. Tiếp theo, bạn sẽ tìm hiểu cách tạo một người dùng MongoDB mới có thể được sử dụng cho các ứng dụng của mình.
Tạo người dùng và cơ sở dữ liệu trên MongoDB
Trong bước này, bạn sẽ tạo một người dùng MongoDB mới có thể được sử dụng cho các ứng dụng của mình. Ngoài ra, bạn cũng sẽ xác minh danh sách người dùng trên máy chủ MongoDB, sau đó đăng nhập vào shell MongoDB bằng người dùng MongoDB mới của bạn.Trước khi bắt đầu, hãy đảm bảo rằng bạn đã đăng nhập vào shell MongoDB. Sau đó, chạy lệnh bên dưới để chuyển sang cơ sở dữ liệu mới 'testdb' và tạo một người dùng MongoDB mới.
Trong ví dụ này, bạn sẽ tạo một người dùng MongoDB mới 'myTestUser' với vai trò 'readWrite' cho cơ sở dữ liệu 'testdb' và vai trò 'read'-only cho cơ sở dữ liệu 'reporting'.
Mã:
use tesdb
db.createUser(
{
user: "myTestUser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "testdb" },
{ role: "read", db: "reporting" } ]
}
)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22570%22%20height=%22344%22%3E%3C/svg%3E
Tiếp theo, chuyển sang cơ sở dữ liệu 'admin' và chạy truy vấn bên dưới để xác minh danh sách người dùng trên MongoDB của bạn máy chủ.
Mã:
use admin
db.system.users.find()
Bây giờ hãy nhấn Ctrl+d để thoát và thoát khỏi shell MongoDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22623%22%20height=%22529%22%3E%3C/svg%3E
Để đảm bảo rằng người dùng MongoDB 'myTestUser' đã được tạo, bây giờ bạn sẽ đăng nhập vào MongoDB thông qua 'myTestUser'.
Chạy lệnh bên dưới để đăng nhập vào MongoDB thông qua người dùng 'myTestUser'. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu của bạn.
Mã:
mongosh --port 27017 -u "myTestUser" \
--authenticationDatabase "testdb" -p
Mã:
db.runCommand({connectionStatus : 1})
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22668%22%20height=%22500%22%3E%3C/svg%3E
Bây giờ bạn đã tạo một người dùng MongoDB mới, tiếp theo bạn sẽ học cách chèn và truy xuất dữ liệu trong MongoDB.
Chèn và truy vấn dữ liệu trong MongoDB
Sau khi tạo một người dùng MongoDB mới, bây giờ bạn sẽ học cách tạo cơ sở dữ liệu, chèn dữ liệu và truy xuất dữ liệu từ MongoDB. Bạn sẽ học cách sử dụng truy vấn 'insertOne' và truy vấn 'insertMany' để thêm dữ liệu vào MongoDB và sử dụng các toán tử truy vấn như '$in' và '$gte' với truy vấn 'find' để lấy dữ liệu từ MongoDB.Trước tiên, hãy đảm bảo rằng bạn đã đăng nhập vào máy chủ MongoDB bằng người dùng mới của mình, ví dụ này là 'myTestUser'. Sau đó chuyển sang cơ sở dữ liệu 'testdb' thông qua truy vấn 'use' bên dưới.
Mã:
use testdb
Tiếp theo, chạy truy vấn bên dưới để tạo một bộ sưu tập mới và chèn dữ liệu mới vào đó. Trong ví dụ này, bạn sẽ tạo một bộ sưu tập mới 'movies' và chèn dữ liệu mới thông qua truy vấn 'insertOne', có thể được sử dụng để chèn chỉ một dữ liệu vào bộ sưu tập.
Mã:
db.movies.insertOne(
{
title: "The Hobbit",
genres: [ "Adventure", "Fantasy" ],
runtime: 172,
rated: "R",
year: 2012,
directors: [ "Peter Jackson" ],
cast: [ "Martin Freeman", "Ian McKellen", "Richard Armitage" ],
type: "movie"
}
)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22686%22%20height=%22433%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để xác minh danh sách các bộ sưu tập trên cơ sở dữ liệu 'testdb' và hiển thị dữ liệu có sẵn trong 'testdb'.
Truy vấn 'show collection' sẽ hiển thị cho bạn danh sách các bộ sưu tập/bảng trên cơ sở dữ liệu hiện tại và truy vấn 'find' sẽ hiển thị dữ liệu có sẵn trên cơ sở dữ liệu của bạn. Bạn cũng có thể lọc các trường cụ thể thông qua truy vấn 'tìm'.
Mã:
show collections
db.movies.find( {} )
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22626%22%20height=%22408%22%3E%3C/svg%3E
Tiếp theo, bạn cũng có thể thêm nhiều dữ liệu cùng lúc thông qua truy vấn 'insertMany'. Chạy truy vấn bên dưới để chèn hai dữ liệu vào bộ sưu tập 'movies' thông qua truy vấn 'insertMany'.
Mã:
db.movies.insertMany([
{
title: "The Lord of the Rings",
genres: [ "Action", "Adventure", "Drama" ],
runtime: 240,
rated: "PG-13",
year: 2001,
directors: [ "Peter Jackson" ],
cast: [ "Elijah Wood", "Ian McKellen", "Orlando Bloom" ],
type: "movie"
},
{
title: "Harry Potter",
genres: [ "Adventure", "Family", "Fantasy" ],
runtime: 140,
rated: "R",
year: 2007,
directors: [ "David Yates" ],
cast: [ "Daniel Radcliffe", "Emma Watson", "Rupert Grint" ],
type: "movie"
}
])
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22678%22%20height=%22647%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh bên dưới Truy vấn 'find' để lấy dữ liệu của bạn. Với truy vấn này, bạn sẽ lấy dữ liệu bằng bộ lọc 'directors: "Peter Jackson"'.
Mã:
db.movies.find( { directors: "Peter Jackson" })
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666%22%20height=%22560%22%3E%3C/svg%3E
Tiếp theo, bạn cũng có thể chỉ định các điều kiện trong truy vấn 'find' bằng cách sử dụng toán tử truy vấn.
Chạy truy vấn bên dưới để truy xuất bất kỳ dữ liệu nào trong đó 'genres' là 'Action' và/hoặc 'Family'. Toán tử '$in' có thể được sử dụng để truy xuất dữ liệu khớp với bất kỳ giá trị nào được chỉ định trong một mảng.
Mã:
db.movies.find( { genres: { $in: [ "Action", "Family" ] } } )
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22668%22%20height=%22582%22%3E%3C/svg%3E
Một toán tử truy vấn khác mà bạn có thể thử là '$gte', có thể được sử dụng để truy xuất dữ liệu lớn hơn hoặc bằng một giá trị đã chỉ định.
Trước đó, hãy chạy truy vấn bên dưới để chèn dữ liệu mới vào bộ sưu tập 'phim'.
Mã:
db.movies.insertOne(
{
title: "Transformers",
genres: [ "Adventure", "Action", "Sci-Fi" ],
runtime: 150,
rated: "PG-13",
year: 2007,
directors: [ "Michael Bay" ],
cast: [ "Shia LaBeouf", "Megan Fox", "Josh Duhamel" ],
type: "movie"
}
)
Mã:
db.movies.find( { genres: "Action", "year": { $gte: 2001 } } )
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22658%22%20height=%22619%22%3E%3C/svg%3E
Với những điều này trong đầu, giờ đây bạn đã học cách chèn và truy xuất dữ liệu trong MongoDB. Bạn đã học truy vấn cơ bản 'insertOne' để thêm một dữ liệu và truy vấn 'insertMany' để thêm một số dữ liệu cùng một lúc.
Sau đó, bạn cũng đã học cách sử dụng cơ bản của truy vấn 'find' để truy xuất dữ liệu từ MongoDB. Ngoài ra, bạn cũng đã học cách sử dụng các truy vấn toán tử '$in' và '$gte' trong MongoDB.
Trong bước tiếp theo, bạn sẽ học cách cập nhật dữ liệu trong các bộ sưu tập MongoDB.
Cập nhật dữ liệu trong MongoDB
Trong bước này, bạn sẽ học cách cập nhật dữ liệu trong MongoDB bằng hai truy vấn, 'updateOne' để cập nhật một trường bên trong tài liệu và sử dụng 'replaceOne' để thay thế hoàn toàn dữ liệu khớp đầu tiên bằng dữ liệu mới.Để cập nhật dữ liệu trong MongoDB, bạn có thể sử dụng nhiều phương thức và truy vấn. Trong ví dụ này, bạn sẽ học cách sử dụng các truy vấn 'updateOne' và 'replaceOne'. Truy vấn 'updateOne' có thể được sử dụng để cập nhật một trường duy nhất trong tài liệu, trong khi 'replaceOne' sẽ thay thế toàn bộ tài liệu.
Chạy truy vấn bên dưới để cập nhật dữ liệu bằng truy vấn 'updateOne'. Trong ví dụ này, bạn sẽ cập nhật 'xếp loại: "PG-13"' thành 'xếp loại: "R"' trên phim 'Transformers'.
Mã:
db.movies.updateOne( { title: "Transformers" },
{
$set: {
rated: "R"
}
})
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22579%22%20height=%22314%22%3E%3C/svg%3E
Bây giờ hãy xác minh dữ liệu mới bằng truy vấn sau. Bạn sẽ thấy dữ liệu về bộ phim 'Transformers' đã được cập nhật.
Mã:
db.movies.find( { title: "Transformers" })
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22623%22%20height=%22329%22%3E%3C/svg%3E
Tiếp theo, chạy truy vấn 'replaceOne' bên dưới để thay thế dữ liệu khớp đầu tiên trong bộ lọc và thay thế toàn bộ tài liệu bằng dữ liệu mới. Trong ví dụ này, bạn sẽ thay thế toàn bộ tài liệu về bộ phim 'Transformers' bằng dữ liệu mới.
Mã:
db.movies.replaceOne(
{ title: "Transformers" },
{
title: "Transformers: Dark of the Moon",
genres: [ "Adventure", "Action", "Sci-Fi" ],
runtime: 160,
rated: "PG-13",
year: 2011,
directors: [ "Michael Bay" ],
cast: [ "Shia LaBeouf", "Rosie Huntington-Whiteley", "Tyrese Gibson" ],
type: "movie"
}
)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để xác minh dữ liệu mới được cập nhật trên MongoDB của bạn.
Mã:
db.movies.find( { title: "Transformers" })
db.movies.find( { title: "Transformers: Dark of the Moon" })
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22379%22%3E%3C/svg%3E
Xóa dữ liệu trong MongoDB
Trong bước này, bạn sẽ học cách xóa dữ liệu trong tài liệu MongoDB. Sau đó, bạn sẽ học cách xóa cơ sở dữ liệu và xóa người dùng trong MongoDB.Chạy lệnh bên dưới để xóa dữ liệu khỏi bộ sưu tập MongoDB. Trong ví dụ này, bạn sẽ xóa toàn bộ tài liệu 'Transformers: Dark of the Moon' thông qua truy vấn 'deleteMany'.
Mã:
db.movies.deleteMany( { title: "Transformers: Dark of the Moon" } )
db.movies.find( { title: "Transformers: Dark of the Moon" })
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22726%22%20height=%22142%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh bên dưới để xóa một tài liệu duy nhất thông qua truy vấn 'deleteOne' bên dưới. Thao tác này sẽ xóa dữ liệu khớp đầu tiên trong bộ lọc.
Trong ví dụ này, bạn sẽ xóa tài liệu đầu tiên khớp với 'cast: "Ian McKellen"'.
Mã:
db.movies.deleteOne( { cast: "Ian McKellen" } )
db.movies.find( { cast: "Ian McKellen" })
Trước khi xóa - Bạn sẽ thấy hai bộ phim có 'cast: "Ian McKellen"'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22625%22%20height=%22553%22%3E%3C/svg%3E
Sau khi tài liệu bị xóa - bạn sẽ chỉ thấy một bộ phim có 'diễn viên: "Ian McKellen"'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22427%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ tìm hiểu cách xóa người dùng và cơ sở dữ liệu trong MongoDB. Để xóa người dùng trong MongoDB, bạn phải có vai trò 'root' trên người dùng quản trị MongoDB của mình.
Chạy lệnh bên dưới để xác thực với tư cách là người dùng quản trị MongoDB 'myAliceAdmin' và nhập mật khẩu của bạn.
Mã:
use admin
db.auth("myAliceAdmin", passwordPrompt())
Mã:
db.grantRolesToUser("myAliceAdmin", ["root"]);
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22529%22%20height=%22234%22%3E%3C/svg%3E
Bây giờ hãy chuyển sang 'testdb' và xóa người dùng trong cơ sở dữ liệu 'testdb' thông qua truy vấn bên dưới. Thao tác này sẽ xóa người dùng 'myTestUser' khỏi MongoDB.
Mã:
use testdb
db.runCommand( { dropAllUsersFromDatabase: 1 } )
Tiếp theo, chạy truy vấn bên dưới để xóa/loại bỏ cơ sở dữ liệu 'testdb'.
Mã:
db.dropDatabase()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22592%22%20height=%22306%22%3E%3C/svg%3E
Bây giờ 'testdb' và người dùng trong cơ sở dữ liệu sẽ bị xóa.
Chạy truy vấn bên dưới để chuyển sang cơ sở dữ liệu 'admin' và xác minh danh sách cơ sở dữ liệu trên máy chủ MongoDB của bạn. Bạn sẽ thấy cơ sở dữ liệu 'testdb' đã bị xóa.
Mã:
use admin
show dbs
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22242%22%20height=%22211%22%3E%3C/svg%3E
Cuối cùng, chạy truy vấn bên dưới để hiển thị và liệt kê người dùng trên MongoDB.
Mã:
db.system.users.find()
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22627%22%3E%3C/svg%3E
Kết luận
Trong hướng dẫn này, bạn đã cài đặt phiên bản mới nhất của MongoDB Server (Phiên bản cộng đồng) trên máy chủ Rocky Linux 9. Bạn cũng đã học cách bật xác thực và ủy quyền trên máy chủ MongoDB và cách tối ưu hóa máy chủ Linux để triển khai MongoDB.Trong quá trình này, bạn đã học cách sử dụng cơ bản lệnh Mongosh để kết nối và quản lý máy chủ MongoDB. Và học các truy vấn MongoDB cơ bản để tạo người dùng, tạo cơ sở dữ liệu, chèn và truy xuất dữ liệu, cập nhật dữ liệu và xóa/gỡ dữ liệu khỏi máy chủ MongoDB.
Với hướng dẫn này, bạn có thể tìm hiểu thêm về truy vấn MongoDB trong Tài liệu MongoDB. Ngoài ra, nếu bạn muốn triển khai MongoDB trong một triển khai lớn, bạn có thể thử bật phân mảnh cho phép bạn thiết lập khả năng mở rộng theo chiều ngang trong cụm MongoDB.