Tran Nhat Sang logo
mongodb 80 phuong thuc quan trong trong mongoDB

80% phương thức quan trọng trong MongoDB

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

  1. $match: Lọc tài liệu (giống WHERE trong SQL)

db.orders.aggregate([
   { $match: { status: "active", total: { $gte: 100 } } }
])

  1. $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" }
   }}
])
  1. $project: Định dạng lại các tài liệu kết quả (giống SELECT trong SQL)

db.users.aggregate([
   { $project: {
      fullName: { $concat: ["$firstName", " ", "$lastName"] },
      age: 1,
      _id: 0
   }}
])
  1. $sort: Sắp xếp các tài liệu

db.posts.aggregate([
   { $sort: { createdAt: -1, likes: -1 } }
])
  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)

  1. 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ị
})
  1. Toán tử Logic:

db.users.find({
   $and: [
      { age: { $gte: 18 } },
      { status: "active" }
   ],
   $or: [
      { role: "admin" },
      { permissions: "manage" }
   ]
})
  1. 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
})
  1. 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

  1. Luôn đặt $match sớm trong pipeline để giảm số lượng tài liệu xử lý.

  2. Sử dụng index hỗ trợ các mẫu truy vấn phổ biến.

  3. 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.

  4. Xem xét việc sử dụng $limit sau $sort để tăng hiệu năng.

  5. Cẩn thận với $unwind vì 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é!

5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Lên đầu trang
0
Rất thích suy nghĩ của bạn, hãy bình luận.x