MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở, được thiết kế để lưu trữ và truy xuất dữ liệu dưới dạng tài liệu (document). Dữ liệu trong MongoDB được lưu ở định dạng BSON (Binary JSON) cho phép lưu trữ các cấu trúc dữ liệu phức tạp một cách linh hoạt. Với khả năng mở rộng theo chiều ngang và hỗ trợ replica set, MongoDB là lựa chọn phổ biến cho các ứng dụng hiện đại cần xử lý dữ liệu lớn và thay đổi nhanh chóng.

Giới thiệu về MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở, được thiết kế để lưu trữ và truy xuất dữ liệu dưới dạng tài liệu (document). Dữ liệu trong MongoDB được lưu ở định dạng BSON (Binary JSON) cho phép lưu trữ các cấu trúc dữ liệu phức tạp một cách linh hoạt. Với khả năng mở rộng theo chiều ngang và hỗ trợ replica set, MongoDB là lựa chọn phổ biến cho các ứng dụng hiện đại cần xử lý dữ liệu lớn và thay đổi nhanh chóng.
Đặc điểm của MongoDB
- Document-oriented và schema-less:
Dữ liệu được lưu trữ dưới dạng các tài liệu trong collection, không yêu cầu định nghĩa schema cứng nhắc. Điều này giúp dễ dàng thay đổi cấu trúc dữ liệu theo thời gian. - Khả năng mở rộng:
MongoDB hỗ trợ sharding, giúp phân mảnh dữ liệu trên nhiều máy chủ để tăng khả năng mở rộng và hiệu năng xử lý. - Tính sẵn sàng cao:
Replica set cho phép sao lưu và đồng bộ dữ liệu giữa các node, đảm bảo dữ liệu luôn sẵn sàng và an toàn khi một nút gặp sự cố. - Ngôn ngữ truy vấn mạnh mẽ:
MongoDB cung cấp cú pháp truy vấn phong phú cho phép thực hiện các thao tác CRUD cũng như các phép toán phức tạp như phân nhóm, lọc và sắp xếp dữ liệu.
Lợi ích khi sử dụng MongoDB trong ASP.NET Core Web API
Khi xây dựng ASP.NET Core Web API, MongoDB mang lại nhiều lợi ích như:
- Linh hoạt về schema: Phù hợp với các ứng dụng có dữ liệu thay đổi liên tục, không cần phải định nghĩa schema trước.
- Hiệu năng cao: Có khả năng xử lý lượng truy vấn lớn với độ trễ thấp.
- Khả năng mở rộng: Dễ dàng mở rộng theo chiều ngang nhờ hỗ trợ sharding và replica sets.
- Phát triển nhanh: Việc tích hợp qua MongoDB.Driver giúp bạn tập trung vào logic nghiệp vụ thay vì phải lo lắng về cấu hình cơ sở dữ liệu phức tạp.
Sử dụng MongoDB trong ASP.NET Core Web API
Trong ASP.NET Core Web API, MongoDB thường được tích hợp qua thư viện chính thức là MongoDB.Driver. Dưới đây là hướng dẫn cơ bản để tích hợp MongoDB vào dự án ASP.NET Core Web API.
Cài đặt MongoDB Driver
- Mở dự án ASP.NET Core của bạn.
- Cài đặt package MongoDB.Driver thông qua NuGet Package Manager hoặc chạy lệnh sau trong terminal:
dotnet add package MongoDB.Driver
Cấu hình kết nối MongoDB
Thêm các thông số kết nối vào file appsettings.json:
{
"MongoDbSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "MyDatabase"
}
}
Tạo lớp cấu hình cho MongoDB
public class MongoDbSettings
{
public string ConnectionString { get; set; }
public string DatabaseName { get; set; }
}
Tạo Repository và Context kết nối
Tạo lớp repository để thực hiện các thao tác CRUD trên MongoDB. Ví dụ, giả sử bạn có model Product:
public class Product
{
public string Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Tạo interface cho repository
public interface IProductRepository
{
Task<List<Product>> GetProductsAsync();
Task<Product> GetProductAsync(string id);
Task CreateProductAsync(Product product);
Task UpdateProductAsync(string id, Product product);
Task DeleteProductAsync(string id);
}
Triển khai repository sử dụng MongoDB.Driver
public class ProductRepository : IProductRepository
{
private readonly IMongoCollection<Product> _productsCollection;
public ProductRepository(IOptions<MongoDbSettings> settings)
{
var client = new MongoClient(settings.Value.ConnectionString);
var database = client.GetDatabase(settings.Value.DatabaseName);
_productsCollection = database.GetCollection<Product>("Products");
}
public async Task<List<Product>> GetProductsAsync() =>
await _productsCollection.Find(product => true).ToListAsync();
public async Task<Product> GetProductAsync(string id) =>
await _productsCollection.Find(product => product.Id == id).FirstOrDefaultAsync();
public async Task CreateProductAsync(Product product) =>
await _productsCollection.InsertOneAsync(product);
public async Task UpdateProductAsync(string id, Product product) =>
await _productsCollection.ReplaceOneAsync(p => p.Id == id, product);
public async Task DeleteProductAsync(string id) =>
await _productsCollection.DeleteOneAsync(p => p.Id == id);
}
Cấu hình Dependency Injection trong ASP.NET Core Web API
Mở file Program.cs (hoặc Startup.cs đối với phiên bản cũ) và đăng ký các dịch vụ
var builder = WebApplication.CreateBuilder(args);
// Đọc cấu hình MongoDB từ appsettings.json
builder.Services.Configure<MongoDbSettings>(builder.Configuration.GetSection("MongoDbSettings"));
// Đăng ký repository
builder.Services.AddScoped<IProductRepository, ProductRepository>();
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Tạo Controller sử dụng MongoDB
Tạo controller để cung cấp các endpoint CRUD cho model Product
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly IProductRepository _repository;
public ProductsController(IProductRepository repository)
{
_repository = repository;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var products = await _repository.GetProductsAsync();
return Ok(products);
}
[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
{
var product = await _repository.GetProductAsync(id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] Product product)
{
await _repository.CreateProductAsync(product);
return CreatedAtAction(nameof(Get), new { id = product.Id }, product);
}
[HttpPut("{id}")]
public async Task<IActionResult> Put(string id, [FromBody] Product product)
{
await _repository.UpdateProductAsync(id, product);
return NoContent();
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(string id)
{
await _repository.DeleteProductAsync(id);
return NoContent();
}
}
Với controller này, bạn đã tạo các endpoint cho phép thực hiện các thao tác CRUD trên MongoDB thông qua repository.
Kết luận
MongoDB là một cơ sở dữ liệu NoSQL mạnh mẽ, linh hoạt với khả năng lưu trữ dữ liệu dưới dạng tài liệu. Khi tích hợp vào ASP.NET Core Web API, bạn có thể sử dụng thư viện MongoDB.Driver để thực hiện các thao tác CRUD, cấu hình kết nối qua appsettings.json, và sử dụng Dependency Injection để quản lý Repository. Việc thiết kế này giúp ứng dụng của bạn có thể mở rộng, dễ bảo trì và đáp ứng tốt các yêu cầu dữ liệu phi cấu trúc.
CÔNG TY TNHH GIẢI PHÁP CÔNG NGHỆ TRANG DESIGNER
Trang Designer chuyên thiết kế website chuẩn SEO, thiết kế logo toàn diện giúp doanh nghiệp xây dựng một thương hiệu mạnh và bán hàng hiệu quả trên các nền tảng số cho nhiều lĩnh vực kinh doanh.
Vui lòng liên hệ: 138 Hiền Vương, Phường Phú Thạnh, Quận Tân Phú, TP. Hồ Chí Minh
Điện thoại: 0903.728.335
Website: www.trangdesigner.id.vn