Là một lập trình viên Backend. Chắc hẳn đa số trong chúng ta đã được tiếp xúc với công nghệ NoSQL. Đặc biệt phải kể đến là MongoDB. Liệu rằng bạn đã nắm chắc được các phương thức quan trọng trong mongoDB hay chưa ? Hay cùng tham khảo bài viết bên dưới của mình nhé! Nắm được 80% Phương thức quan trọng trong mongoDB giúp lập trình viên Backend dễ thở hơn khi tiếp cận công nghệ NoSQL
Phương thức quan trọng trong MongoDB sử dụng Aggregate và Find
$match: Lọc tài liệu (giốngWHEREtrong SQL)
db.orders.aggregate([
{ $match: { status: "active", total: { $gte: 100 } } }
])
$group: Nhóm các tài liệu theo một khoá chính và thực hiện tính toán
db.sales.aggregate([
{ $group: {
_id: "$product",
totalSales: { $sum: "$amount" },
avgPrice: { $avg: "$price" }
}}
])
$project: Định dạng lại các tài liệu kết quả (giốngSELECTtrong SQL)
db.users.aggregate([
{ $project: {
fullName: { $concat: ["$firstName", " ", "$lastName"] },
age: 1,
_id: 0
}}
])
$sort: Sắp xếp các tài liệu
db.posts.aggregate([
{ $sort: { createdAt: -1, likes: -1 } }
])
$lookup: Thực hiện left outer join với collection khác
db.orders.aggregate([
{ $lookup: {
from: "products",
localField: "productId",
foreignField: "_id",
as: "productDetails"
}}
])
Các Toán Tử Truy Vấn Phổ Biến Nhất (80% các trường hợp sử dụng)
- Toán tử So sánh:
db.products.find({
price: { $gt: 100, $lt: 200 }, // Lớn hơn, Nhỏ hơn
stock: { $gte: 10 }, // Lớn hơn hoặc bằng
category: { $in: ["A", "B"] } // Thuộc một trong các giá trị
})
- Toán tử Logic:
db.users.find({
$and: [
{ age: { $gte: 18 } },
{ status: "active" }
],
$or: [
{ role: "admin" },
{ permissions: "manage" }
]
})
- Toán tử Mảng:
db.posts.find({
tags: { $all: ["mongodb", "database"] }, // Chứa tất cả các phần tử
comments: { $size: 5 }, // Kích thước mảng
"ratings.0": { $gte: 4 } // Phần tử đầu tiên >= 4
})
- Toán tử Phần tử:
db.customers.find({
phoneNumber: { $exists: true }, // Trường tồn tại
age: { $type: "number" } // Kiểu dữ liệu là số
})
Một Số Tips Tối Ưu Hóa
Luôn đặt
$matchsớm trong pipeline để giảm số lượng tài liệu xử lý.Sử dụng index hỗ trợ các mẫu truy vấn phổ biến.
Sử dụng
$projectđể loại bỏ các trường không cần thiết khi làm việc với tài liệu lớn.Xem xét việc sử dụng
$limitsau$sortđể tăng hiệu năng.Cẩn thận với
$unwindvì nó có thể làm tăng kích thước tài liệu đốt biến.
Liên quan
Hi vọng bài viết giúp bạn nắm vững các thao tác Aggregation trong MongoDB một cách dễ dàng và hiệu quả nhất! Hãy thữ nghịch ngay và chia sẻ trải nghiệm của bạn nhé! #mongodb #nosql
https://chatgpt.com/canvas/shared/67b152adde2c8191a867baa0659dc347
Xêm thêm về series Database của mình ở đây nhé!


