Sử dụng MongoDB trong các dự án ASP .NET Core

MongoDB là gì?

MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở thuộc họ NoSQL rất phổ biến được hàng triệu người đang sử dụng trên khắp thế giới.
MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.



MongoDB có những khái niệm tương đương với các khái niệm bên mô hình cơ sở dữ liệu quan hệ (RDBMS). Tham khảo hình ảnh dưới đây



Một số câu lệnh cơ bản trên MongoDB
use userTestDb;
db.createCollection('users');
db.users.insert({ name:'Tuan Nguyen', gender: 'Male'});
db.users.update({ _id: 1 },{$set:{ name: 'Nguyen Tuan' }});
db.users.remove({ _id: 1});
db.users.find({});
db.users.find({ name: 'Tuan Nguyen' });

Cài đặt MongoDB với ASP .NET Core

Yêu cầu
Visual Studio or Visual Studio Code
.NET Core

Các bạn có thể tham khảo và tải về code mẫu ở đây.

Các bước tiến hành
Khởi tạo một project mới dạng Web API
dotnet new webapi -o MongoDBTest

Cài đặt MongoDB sử dụng Docker.Tham khảo bài viết về cài đặt các công cụ sử dụng Docker ở đây.

Trong trường hợp bạn muốn setup user and password cho MongoDB bạn dùng lệnh bên dưới
docker run -d --name local-mongo -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=dotnetcoban -p 27017:27017 mongo
Trong trường hợp chỉ muốn test đơn giản mà bỏ qua bảo mật có thể dùng câu lệnh dưới đây
docker run -d --name local-mongo -p 27017:27017 mongo

Kiểm tra việc cài đặt và khởi tạo data bằng các câu lệnh sau
docker exec -it local-mongo bash
mongo
use BookstoreDb
db.createCollection('Books')
db.Books.insertMany([{'Name':'Design Patterns','Price':54.93,'Category':'Computers','Author':'Ralph Johnson'}, {'Name':'Clean Code','Price':43.15,'Category':'Computers','Author':'Robert C. Martin'}])
db.Books.find({}).pretty()

Ngoài việc tương tác với MongoDB bằng dòng lệnh. Chúng ta có thể sử dụng các công cụ hỗ trợ giao diện để tương tác với MongoDB được dễ dàng và hiệu quả hơn. Một số công cụ có thể kể đến như
MongoDB Compass
Robo 3T (Robomongo)
NoSQLBooster
NoSQL Manager
Mongo Management Studio
Studio 3T

Cài đặt thư viện để tương tác với MongoDB
https://www.nuget.org/packages/MongoDB.Driver
Trong trường hợp muốn làm việc với file
https://www.nuget.org/packages/MongoDB.Driver.GridFS

cd MongoDBTest
dotnet add package MongoDB.Driver

Khởi tạo các classes cần thiết
Class Book.cs mô tả object cần lưu
Class MongoDbContext.cs mô tả kết nối tới Mongo và quản lý các collections trong toàn bộ dự án
Class BookService.cs mô tả các thao tác lấy, thêm, sửa, xóa dữ liệu liên quan đến Book
Class BookController.cs khởi tạo các APIs
Chỉnh sửa cấu hình trong file Startup.cs
Tiến hành chạy thử
dotnet run

Vào đường dẫn sau để xem kết quả
http://localhost:5000/api/books



Với các APIs khác bạn có thể sử dụng REST Client extension của VSCode và dùng file dưới đây để kiểm tra
Kết quả thu được có thể như sau



Tham khảo thêm
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mongo-app



Tiếp tục cập nhật ...