Tình hình là đang làm một cái mạng xã hội mini về thú cưng mà đang dùng cơ sở dữ liệu là MongoDB nên gặp khó khăn trong việc quản lý cơ sỏ dữ liệu thông qua dòng lệnh nên đành lên google kiếm thì thấy có em này adminMongo khá là ngon.
Tất nhiên bạn cũng có thể dùng MongoDB Compass thằng này cũng khá OK, vì vậy trong bài viết này tôi sẽ hướng dẫn bạn dùng hai cái và ưu điểm của từng cái
Mục lục
AdminMongo là gì
Theo như từ trang Github thì nó là một công cụ dùng để quản lý hệ cơ sở dữ liệu MongoDB thông qua giao diện Web nhưng nó cũng đồng thời hỗ trợ thông qua app.
Cài đặt
Chúng ta cần phải có Nodejs trước khi cài đặt nó, để cài đặt NodeJs thì bạn chỉ cần lên trang chủ nó thôi, trong bài viết này tôi sẽ hướng dẫn các bạn cài đặt thông qua docker
Tại sao lại là Docker thì lý do đơn giản thôi, ngày nay hầu hết các ứng dụng NodeJS là dùng tech stack Docker hay Vagrant để cấu hình môi trường phát triển, lý do khác nữa là tôi muốn cái desktop tôi là clean không phải có các thư viện Nodejs gì cả.
Nếu bạn nào chưa biết Docker là gì, thì hãy xem qua khóa học Docker căn bản tất nhiên nó là miễn phí.
Ok, mọi thứ đã rõ bạn cần tải nó về từ github thông qua lệnh sau:
[code lang=text]
git clone [email protected]:mrvautin/adminMongo.git
[/code]
Bản thân tác giả này đã cung cấp cho bạn một tập tin Dokcerfile do đó bạn chỉ cần rebuild nó lại thôi, chỉ cần gõ lệnh sau:
[code lang=text]
docker build -t gsviec/adminmongo .
[/code]
sau khi chạy lệnh đó bạn sẽ có kết quả như sau:
[code lang=text]
$ docker build -t gsviec/adminmongo .
Sending build context to Docker daemon 11.18 MB
Step 1/5 : FROM node:latest
latest: Pulling from library/node
10a267c67f42: Pull complete
fb5937da9414: Pull complete
9021b2326a1e: Pull complete
dbed9b09434e: Pull complete
74bb2fc384c6: Pull complete
1df5aff49349: Pull complete
671d0d9027cc: Pull complete
1b3b3c9b2d4f: Pull complete
Digest: sha256:97fbb8f75f24e288fb795f7c3d247d6ba9c91a16c775ab5465eabb3d10390564
Status: Downloaded newer image for node:latest
—> f1a3ed02f2db
Step 2/5 : COPY . /app/user
—> 4b471a070942
Removing intermediate container 4e6c33d52205
Step 3/5 : WORKDIR /app/user
—> 550a10f9e03a
Removing intermediate container 0d01580e28f3
Step 4/5 : RUN npm install
—> Running in 2af0fb9d1cd6
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/async
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/body-parser
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/bootstrap
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/config
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/cookie-parser
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/express
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/express-handlebars
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/express-session
npm info attempt registry request try #1 at 10:33:36 AM
npm http request GET https://registry.npmjs.org/font-awesome
[/code]
Sau đó bạn đi chế ly cafe:) để uống, nếu mọi thứ thành công thì bạn sẽ thấy một cái images adminmongo
[code lang=text]
docker images | grep adminmongo
[/code]
Cách dùng
Để sử dụng cái image trên thì bạn phải có một cơ sở dữ kiệu MongoDB nếu chưa có bạn có thể cài đặt thông qua lệhh sau:
[code lang=text]
docker pull mongo
[/code]
Sau đó bạn định nghĩa một tập tin docker-compose.yml như sau
[php]
version: ‘2’
services:
mongo:
restart: ‘no’
image: mongo:3.0
volumes:
– ./docker/mongo:/data/db
#command: "–setParameter failIndexKeyTooLong=false"
ports:
– "27017:27017"
adminmongo:
restart: ‘no’
image: gsviec/adminmongo
depends_on:
– mongo
ports:
– "8080:1234"
[/php]
sau đó bạn chỉ cần chạy docker-compose up thế là xong, bạn cũng có thể xác nhận nó thông qua lệnh docker ps nếu bạn thấy kết quả như hình bên dưới có nghĩa là bạn đã chạy thành công:
sau đó bạn truy cập qua đường dẫn http://localhost:8080 thì sẽ thấy cái hình bên dưới
để kết nối vào mongodb thì bạn dùng cú pháp sau:
[code lang=text]
mongodb://<user>:<password>@127.0.0.1:<port>/<db>
[/code]
nếu bạn dùng docker thì mặc định ở trên nó sẽ có dạng như sau:
[code lang=text]
mongodb://mongo:27017/dev
[/code]
sau khi bạn thêm vào chỉ việc nhấn “Add connect” như hình bên dưới nó sẽ báo thành công sau đó bạn chỉ việc nhấn nút mũi tên màu đỏ ở trên để vào trang quản lý. Trong trang quản lý bạn có thể thêm hoặc xóa các collection hay các data trong đó tuỳ bạn
Cập nhật một document trong collection của mongodb
Xem chi tiết một collection trong mongodb
Còn rất nhiều những tính năng hay bạn có thể khám phá thêm, tuỳ thuộc vào nhu cầu của bạn, kế đến mình giới thiệu GUI do thằng MongoDB cung cấp
MongoDB Compass
Theo như từ trang chủ thì nó là một công cụ dùng để quản lý hệ cơ sở dữ liệu MongoDB thông qua desktop, nếu bạn nào dùng MySQL workben sẽ hiểu.
Cài đặt nó khá là đơn giản chỉ cần vào MongoDB Compass chọn phiên bản cho HĐH của bạn, trong trường hợp của tôi là OSX do đó tôi chọn phiên bản là OSX, sau khi cài đặt xong bạn sẽ có giao diện thế này
các tham số bên tay trái tôi nghĩ khá là dễ hiểu, chỉ cần nhập vào sau đó kết nối vào bạn sẽ có dạng như sau:
Để xem chi tiết của một database trong MongoDb bạn chỉ việc click vào nó thôi
Để xem chi tiết một collection trong Database chỉ việc click vào em nó thôi
Để edit một documents thì chọn phần documents sau đó double click vào field mà bạn muốn update
Xem query performance
So sánh
Khi nào thì bạn nên dùng thằng AdminMongo và khi nào thì dùng MongoDB Compass, theo ý kiến của tôi thì khi bạn muốn connect vào database mongo thông qua giao thức SSH thì chỉ có thằng MongoDB Compass hỗ trợ lúc này bạn nên dùng nó.
Còn nếu bạn muốn truy cập nhanh thông qua giao diện web thì cứ việc cài nó lên server thế là xong cái này phù hợp cho các bạn nào muốn truy cập khẩn cấp mà không có đem theo laptop, có thể truy cập qua mobile:)
Nếu bạn muốn xem Visualize, geospatial data, query performance thì chỉ có thằng MongoDB Compass hỗ trợ thôi, do đó thì có vẻ em MongoDB Compass có nhiều tính năng hơn!!
Giao diện thì 2 em này mình thấy đều ngon cả, nên bạn dùng cả 2 cũng chả sao!!!
MongoDB Compass có một điểm dễ đó là bộ tìm kiếm hay filter cho collection cực kỳ kém thân thiện sp với adminMongo
Kết luận
Nếu bạn nào đã quen với PHPMYADMIN thần thành bên MySQL thì không thể bỏ qua hai em này trong việc tương tác dữ liệu với MongoDB, anh em có dùng thằng nào hay thì hãy chia sẽ với gsviec!!