MongoDB Compass là tiện ích cơ sở dữ liệu hoạt động trên cả Windows PC và Mac, được thiết kế để chạy các truy vấn, tìm kiếm và quản lý chi tiết structure cơ sở dữ liệu MongoDB. Chương trình hỗ trợ người dùng tương tác tốt hơn với dữ liệu MongoDB và tối ưu hiệu suất truy vấn với bộ công cụ hiển thị chuyên dụng.

Trong bài viết này, VietnamWorks inTECH sẽ hướng dẫn bạn cách cài đặt MongoDB Compass trên local machine và làm quen với cách thực hiện quản trị cơ sở dữ liệu khác nhau bằng graphical tool.

Bước 1 — Cài đặt MongoDB Compass

Để tìm phiên bản phù hợp cho máy của bạn, hãy đến trang MongoDB Compass Downloads page. Ở đó, hãy tìm phần Available Downloads ở phía bên phải của trang và chọn VersionPlatform mong muốn của bạn từ thanh menu. Bài viết này sẽ cài đặt phiên bản 1.28.4, phiên bản ổn định mới nhất tại thời điểm viết bài.

Sau khi chọn  xong, nhấp vào nút Copy Link để sao chép liên kết tải xuống vào bộ nhớ tạm của bạn. Nếu bạn chọn Ubuntu làm platform, liên kết này sẽ tải xuống một package .deb, nhưng nếu bạn chọn RedHat, liên kết sẽ tải xuống một package .rpm.

Nếu local machine của bạn đang chạy Ubuntu và liên kết bạn đã sao chép là package .deb, hãy chạy lệnh wget và chuyển liên kết bạn vừa sao chép vào đó làm đối số. Thao tác này sẽ tải package về thư mục làm việc của bạn:

wget https://downloads.mongodb.com/compass/mongodb-compass_1.28.4_amd64.deb

Sau đó cài đặt package .deb với apt:

sudo apt install ./mongodb-compass_1.28.4_amd64.deb

Lệnh này sẽ cài đặt gói Compass cùng với tất cả các dependency cần thiết.

Tuy nhiên, nếu bạn đang sử dụng bản phân phối dựa trên RHEL như CentOS, Fedora hoặc Rocky Linux, bạn có thể tải xuống và cài đặt package .rpm trực tiếp từ web bằng một lệnh duy nhất. Chạy lệnh dnf sau sẽ giúp cài đặt Compass cùng với tất cả các dependency của nó:

sudo dnf install -y https://downloads.mongodb.com/compass/mongodb-compass-1.26.1.x86_64.rpm

Sau khi cài đặt thành công MongoDB Compass, bạn có thể chạy phần mềm đã cài đặt bằng lệnh:

mongodb-compass

Compass sẽ hiện thị màn hình như sau:

Bước 2 — Kết nối với MongoDB Server

Để sử dụng MongoDB Compass với phiên bản MongoDB đang chạy trên remote server của bạn, trước tiên bạn phải kết nối với nó giống như khi bạn truy cập cơ sở dữ liệu thông qua shell.

Compass cho phép bạn kết nối bằng cách sử dụng connection string — một dòng văn bản chứa tất cả thông tin kết nối cơ sở dữ liệu cần thiết — hoặc bằng cách điền vào tất cả các connection details. Bài viết này sẽ hướng dẫn bạn kết nối bằng cách thứ hai, nhưng nếu bạn muốn tìm hiểu cách tạo connection string, bạn nên tham khảo tài liệu chính thức về chủ đề này .

Nhấp vào Fill in connection fields individually ở đầu màn hình. Màn hình New Connection sẽ xuất hiện với danh sách các trường trống:

Nhập địa chỉ IP của remote server mà phiên bản MongoDB của bạn đang chạy vào trường Hostname. Để lại giá trị Port mặc định trừ khi bạn đã thay đổi port mà phiên bản MongoDB của bạn đang kết nối. Vì tính năng bảo mật máy chủ bằng xác thực đã được bật, nên bạn cũng cần chuyển tùy chọn Authentication thành Username / Password. Sau khi chọn tùy chọn này, hãy nhập tên người dùng quản trị MongoDB của bạn, mật khẩu được liên kết với tài khoản này và cơ sở dữ liệu xác thực của người dùng này trong ba trường tiếp theo.

Sau khi nhấp vào nút Connect, Compass sẽ cố gắng kết nối với phiên bản MongoDB. Nếu thành công, bạn sẽ được chuyển đến Màn hình chính hiển thị danh sách tất cả các cơ sở dữ liệu. Chúng cũng sẽ xuất hiện trong bảng điều khiển bên trái cùng với các thông tin chi tiết như địa chỉ IP của máy chủ, cơ sở dữ liệu và phiên bản MongoDB đang chạy:

Nếu thiết lập không thành công, hãy đảm bảo rằng bạn đã nhập chính xác tất cả các chi tiết kết nối.

Bước 3 — Chuẩn bị Test Data

Để minh họa các tính năng khác nhau của MongoDB Compass, hướng dẫn này sẽ sử dụng một bộ tài liệu mẫu có sẵn trong Compass. Bước này liên quan đến việc tạo một collection và chèn bộ dữ liệu mẫu này vào đó.

Collection mẫu này chứa các tài liệu đại diện cho 20 thành phố đông dân nhất trên thế giới. Một tài liệu mẫu cho Tokyo sẽ theo structure sau:

{
    "name": "Tokyo",
    "country": "Japan",
    "continent": "Asia",
    "population": 37.400
}

Tài liệu chứa thông tin về tên thành phố, quốc gia nơi thành phố tọa lạc, lục địa và dân số của thành phố tính bằng triệu người. Hướng dẫn này sẽ đặt tên cho cơ sở dữ liệu mẫu là populations và collection sẽ lưu trữ các tài liệu sẽ được đặt tên cities.

Để bắt đầu, hãy nhấp vào nút CREATE DATABASE ở Màn hình chính. Ngoài ra, bạn có thể nhấp vào dấu cộng ( + ) ở cuối bảng điều khiển bên trái.

Trong MongoDB, cơ sở dữ liệu và collection thường được tạo khi tài liệu đầu tiên được chèn vào collection mà không cần thao tác tạo rõ ràng cho các structure này. Tuy nhiên, bạn có thể tạo một cơ sở dữ liệu mới một cách rõ ràng bằng cách sau đây.

Nhập populations vào trường Database Namecities vào trường Collection Name, để các trường khác ở giá trị mặc định và sau đó nhấp vào Create Database:

Compass sẽ tạo cơ sở dữ liệu. Nhấp vào cơ sở dữ liệu populations để đến chế độ xem cơ sở dữ liệu. Sau đó, nhấp cities để đến chế độ xem collection trống:

Bây giờ cơ sở dữ liệu và collection đã được tạo, bạn có thể chèn danh sách các tài liệu chưa được sắp xếp vào collection cities. Nhấp vào nút ADD DATA và sau đó chọn tùy chọn Insert Document .

Một cửa sổ sẽ xuất hiện bạn có thể nhập một hoặc nhiều tài liệu dữ liệu, ở định dạng JSON, như bạn sẽ làm khi sử dụng lệnh shell. Nhập bộ tài liệu sau vào trường này, thay thế bất kỳ nội dung nào ở đó theo mặc định:

[
  {"name": "Seoul", "country": "South Korea", "continent": "Asia", "population": 25.674 },
  {"name": "Mumbai", "country": "India", "continent": "Asia", "population": 19.980 },
  {"name": "Lagos", "country": "Nigeria", "continent": "Africa", "population": 13.463 },
  {"name": "Beijing", "country": "China", "continent": "Asia", "population": 19.618 },
  {"name": "Shanghai", "country": "China", "continent": "Asia", "population": 25.582 },
  {"name": "Osaka", "country": "Japan", "continent": "Asia", "population": 19.281 },
  {"name": "Cairo", "country": "Egypt", "continent": "Africa", "population": 20.076 },
  {"name": "Tokyo", "country": "Japan", "continent": "Asia", "population": 37.400 },
  {"name": "Karachi", "country": "Pakistan", "continent": "Asia", "population": 15.400 },
  {"name": "Dhaka", "country": "Bangladesh", "continent": "Asia", "population": 19.578 },
  {"name": "Rio de Janeiro", "country": "Brazil", "continent": "South America", "population": 13.293 },
  {"name": "São Paulo", "country": "Brazil", "continent": "South America", "population": 21.650 },
  {"name": "Mexico City", "country": "Mexico", "continent": "North America", "population": 21.581 },
  {"name": "Delhi", "country": "India", "continent": "Asia", "population": 28.514 },
  {"name": "Buenos Aires", "country": "Argentina", "continent": "South America", "population": 14.967 },
  {"name": "Kolkata", "country": "India", "continent": "Asia", "population": 14.681 },
  {"name": "New York", "country": "United States", "continent": "North America", "population": 18.819 },
  {"name": "Manila", "country": "Philippines", "continent": "Asia", "population": 13.482 },
  {"name": "Chongqing", "country": "China", "continent": "Asia", "population": 14.838 },
  {"name": "Istanbul", "country": "Turkey", "continent": "Europe", "population": 14.751 }
]

Nhấp vào nút INSERT và Compass sẽ chèn danh sách tài liệu rồi tự động hiển thị chúng trong trình duyệt collection:

Bước 4 - Navigate và lọc data

Công cụ navigate chính trong Compass là bảng điều khiển bên trái, hoạt động giống như một cái cây hiển thị nội dung của cơ sở dữ liệu. Các top-level nodes là cơ sở dữ liệu mà bạn có thể nhấp vào để hiển thị danh sách các bộ sưu tập có sẵn.

Để điều hướng đến collection cities bạn đã tạo ở bước trước, hãy nhấp vào populations, tên cơ sở dữ liệu và danh sách mọi collection trong đó sẽ xuất hiện. Sau khi chuẩn bị test data, một collection duy nhất sẽ hiện ra. Bằng cách nhấp vào tên collection, bạn sẽ load màn hình trình duyệt dữ liệu.

Theo mặc định, Compass sẽ hiển thị 20 kết quả chưa được lọc được trả về bởi một truy vấn trống trên collection đã chọn. Ở bên phải nút ADD DATA bạn đã sử dụng ở bước trước, bạn sẽ thấy phần View section với ba chế độ hiển thị riêng biệt mà bạn có thể chọn:

  • List view: chế độ xem mặc định hiển thị tài liệu dưới dạng các cặp key-value được hiển thị liên tiếp. Chế độ hiển thị này giống với định dạng tài liệu JSON, nhưng nó syntax coloring và các tính năng giao diện bổ sung, chẳng hạn như tài liệu lồng nhau có thể thu gọn, giúp dễ đọc hơn:

  • JSON view: chế độ xem này hiển thị cấu trúc tài liệu thực tế như được trình bày trong JSON:

  • Table view: hiển thị dữ liệu trong giao diện dạng bảng, tương tự như trong cơ sở dữ liệu quan hệ. 

Bất kể bạn sử dụng chế độ xem nào, bạn có thể sử dụng màn hình trình duyệt dữ liệu để truy vấn nhanh dữ liệu của mình giống như cách bạn làm với phương thức find() trong MongoDB shell. Ví dụ: bạn có thể truy vấn collection của mình để tìm tất cả các tài liệu đại diện cho các thành phố ở Bắc Mỹ bằng cách chạy thao tác sau trong MongoDB shell:

db.cities.find({ "continent": "North America" })

Trong phương pháp find() này, { "continent": "North America" } tài liệu truy vấn. Đây là một phần của lệnh cho MongoDB biết cách lọc dữ liệu. Tương tự như vậy, bạn có thể nhập tài liệu này hoặc bất kỳ tài liệu truy vấn nào khác vào trường FILTER của MongoDB Compass ở đầu cửa sổ collection để lọc dữ liệu.

Hãy tiếp tục và nhập tài liệu truy vấn này vào trường FILTER , sau đó nhấn FIND:

{ "continent": "North America" }

MongoDB Compass sẽ thu hẹp danh sách tài liệu thành hai mục phù hợp với tiêu chí lọc. Nếu cú pháp bị lỗi, Compass sẽ chuyển icon FILTER sang màu đỏ, cho biết có vấn đề với truy vấn.

Bạn cũng có thể sắp xếp kết quả và áp dụng các phép chiếu để chỉ trả lại một tập hợp con giới hạn. Nhấp vào nút OPTIONS gần thanh truy vấn lọc để hiển thị các tùy chọn khác. Các trường PROJECTSORT sẽ xuất hiện bên dưới trường FILTER.

Cả hai trường PROJECT SORT đều chấp nhận cùng một tài liệu mà bạn sẽ chuyển đến các phương thức find() sort() trong shell. Ví dụ: thử giới hạn các trường được trả về để chỉ hiển thị tên thành phố và dân số, sau đó sắp xếp kết quả theo thứ tự tăng dần theo dân số.

Để giới hạn danh sách các trường trong name population, hãy thêm tài liệu trình chiếu sau vào trường PROJECT 

{ "_id": 0, "name": 1, "population": 1 }

Để sắp xếp danh sách theo dân số theo thứ tự tăng dần, hãy thêm tài liệu sau vào trường SORT  :

{ "population": 1 }

Nhấp vào nút FIND một lần nữa để áp dụng lệnh:

Compass hiện hiển thị hai tài liệu đơn giản đại diện cho Thành phố New York và Thành phố Mexico. Các kết quả tương đương với việc chạy truy vấn sau trong MongoDB shell:

  1. db.cities.find(
  2. { "continent": "North America" },
  3. { "_id": 0, "name": 1, "population": 1 }
  4. ).sort(
  5. { "population": 1 }
  6. )

Để xóa bộ lọc, hoàn tác lại tác vụ đã làm, bạn có thể nhấp vào nút RESET .

Như vậy, bạn đã vừa cài đặt thành công MongoDB Compass cũng như một vài thao tác cơ bản khi sử dụng Compass. Để tìm hiểu thêm về sự hữu ích của Compass, bạn nghiên nên cứu tài liệu MongoDB Compass đầy đủ tại đây.

VietnamWorks inTECH