0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng dẫn sử dụng MongoDB Shell để đếm tài liệu

Đăng vào 1 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

Hướng dẫn sử dụng MongoDB Shell để đếm tài liệu

MongoDB là một trong những cơ sở dữ liệu NoSQL phổ biến nhất hiện nay. Khi làm việc với MongoDB, đôi khi bạn cần đếm số lượng tài liệu trong các bộ sưu tập khác nhau. Trong bài viết này, chúng ta sẽ xem xét cách sử dụng MongoDB Shell để thực hiện điều đó thông qua một đoạn mã đơn giản.

Mục tiêu của bài viết

Bài viết này sẽ giúp bạn:

  • Hiểu rõ cách đếm tài liệu trong MongoDB bằng Shell.
  • Thực hiện các thao tác kiểm tra và đếm tài liệu trong các bộ sưu tập khác nhau.
  • Tránh những lỗi thường gặp khi sử dụng lệnh đếm.

Cấu trúc mã

Cấu hình cơ bản

Trước tiên, bạn cần xác định các bộ sưu tập mà bạn muốn đếm tài liệu. Dưới đây là phần cấu hình cơ bản trong mã:

javascript Copy
// ======= CONFIG: liệt kê các bộ sưu tập cơ bản =======
const targetCollections = [
  'collection1',
  'collection2',
  'collection3'
];

Bạn có thể thay thế 'collection1', 'collection2', và 'collection3' bằng tên thực tế của các bộ sưu tập trong cơ sở dữ liệu của bạn.

Các hàm tiện ích

Tiếp theo, chúng ta sẽ định nghĩa một số hàm tiện ích để kiểm tra sự tồn tại của bộ sưu tập và đếm tài liệu:

javascript Copy
// ======= TIỆN ÍCH =======
function collExists(name) {
  return db.getCollectionInfos({ name }).length > 0;
}
function countOrZero(name) {
  if (!collExists(name)) return 0;
  // Đếm chính xác; nếu bạn muốn nhanh hơn (ước lượng) hãy sử dụng estimatedDocumentCount()
  return db.getCollection(name).countDocuments({});
}
  • collExists(name): Hàm này kiểm tra xem bộ sưu tập có tồn tại hay không.
  • countOrZero(name): Hàm này sẽ trả về số tài liệu trong bộ sưu tập hoặc 0 nếu bộ sưu tập không tồn tại.

Hàm định dạng chuỗi

Để hiển thị kết quả đẹp hơn, chúng ta sẽ định nghĩa một hàm để căn chỉnh chuỗi:

javascript Copy
function pad(str, len) {
  const s = String(str);
  return s + " ".repeat(Math.max(0, len - s.length));
}

Hàm này sẽ giúp căn chỉnh các giá trị hiển thị trong kết quả đếm tài liệu.

Chạy mã

Bây giờ chúng ta sẽ chạy mã để đếm số lượng tài liệu trong các bộ sưu tập mà chúng ta đã liệt kê:

javascript Copy
// ======= CHẠY =======
const header =
  "Bộ sưu tập".padEnd(28) +
  "gốc".padEnd(12) +
  "trùng lặp_".padEnd(14) +
  "sao lưu_".padEnd(12) +
  "sao lưu_các ứng dụng mới_".padEnd(18);

print(header);
print("-".repeat(header.length));

let totalOriginal = 0;
let totalDuplicated = 0;
let totalBackup = 0;
let totalBackupNewApps = 0;

for (const base of targetCollections) {
  const originalName = base;
  const duplicatedName = `trùng_lặp_${base}`;
  const backupName = `sao_lưu_${base}`;
  const backupNewAppsName = `sao_lưu_các_ứng_dụng_mới_${base}`;

  const cOriginal = countOrZero(originalName);
  const cDup = countOrZero(duplicatedName);
  const cBackup = countOrZero(backupName);
  const cBackupNew = countOrZero(backupNewAppsName);

  totalOriginal += cOriginal;
  totalDuplicated += cDup;
  totalBackup += cBackup;
  totalBackupNewApps += cBackupNew;

  print(
    pad(base, 28) +
    pad(cOriginal, 12) +
    pad(cDup, 14) +
    pad(cBackup, 12) +
    pad(cBackupNew, 18)
  );
}

print("-".repeat(header.length));
print(
  pad("TỔNG", 28) +
  pad(totalOriginal, 12) +
  pad(totalDuplicated, 14) +
  pad(totalBackup, 12) +
  pad(totalBackupNewApps, 18)
);

Kết quả

Khi chạy đoạn mã này, bạn sẽ nhận được một bảng hiển thị số lượng tài liệu trong các bộ sưu tập đã chỉ định. Điều này rất hữu ích khi bạn cần theo dõi dữ liệu trong MongoDB.

Các thực tiễn tốt nhất

  1. Kiểm tra sự tồn tại của bộ sưu tập: Luôn luôn kiểm tra xem bộ sưu tập có tồn tại trước khi thực hiện các thao tác trên đó để tránh lỗi.
  2. Sử dụng estimatedDocumentCount() khi cần thiết: Nếu bạn cần một con số ước lượng nhanh chóng, hãy sử dụng hàm này thay vì countDocuments().
  3. Đảm bảo dữ liệu được sao lưu: Để tránh mất dữ liệu, hãy thường xuyên sao lưu dữ liệu của bạn.

Những cạm bẫy phổ biến

  • Quên kiểm tra sự tồn tại của bộ sưu tập: Điều này có thể dẫn đến lỗi không mong muốn trong mã của bạn.
  • Sử dụng hàm không chính xác: Đảm bảo bạn hiểu rõ các hàm mà bạn đang sử dụng để tránh nhầm lẫn.

Mẹo hiệu suất

  • Tối ưu hóa truy vấn: Sử dụng các chỉ mục hợp lý để tối ưu hóa việc đếm tài liệu.
  • Giảm thiểu dữ liệu cần kiểm tra: Chỉ định các điều kiện cụ thể trong countDocuments() để giảm thiểu số lượng tài liệu được kiểm tra.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng MongoDB Shell để đếm tài liệu trong các bộ sưu tập khác nhau. Việc sử dụng đoạn mã đơn giản này sẽ giúp bạn dễ dàng theo dõi số lượng tài liệu và quản lý cơ sở dữ liệu của mình hiệu quả hơn. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới hoặc tham gia vào cộng đồng MongoDB để nhận được sự hỗ trợ.

Câu hỏi thường gặp (FAQ)

1. Làm thế nào để kiểm tra xem một bộ sưu tập có tồn tại không?
Bạn có thể sử dụng hàm collExists(name) mà chúng tôi đã định nghĩa trong mã.

2. Có cách nào khác để đếm tài liệu không?
Có, bạn có thể sử dụng estimatedDocumentCount() để có số lượng ước lượng nhanh hơn.

3. Tại sao tôi không thấy kết quả chính xác?
Hãy chắc chắn rằng bạn đã kiểm tra sự tồn tại của bộ sưu tập và sử dụng đúng các hàm.

Nếu bạn muốn tìm hiểu thêm về MongoDB, hãy tham khảo tài liệu chính thức tại MongoDB Documentation.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào