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

Cách Sử Dụng MongoDB với Node.js để Truy Vấn Dữ Liệu

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

• 5 phút đọc

Cách Sử Dụng MongoDB với Node.js để Truy Vấn Dữ Liệu

Giới Thiệu

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Node.js kết hợp với MongoDB để thực hiện các truy vấn cơ bản. MongoDB là một cơ sở dữ liệu NoSQL phổ biến, trong khi Node.js là một môi trường chạy JavaScript phía máy chủ. Việc kết hợp hai công nghệ này giúp bạn xây dựng các ứng dụng web mạnh mẽ và hiệu quả. Chúng ta sẽ đi qua một ví dụ cụ thể về việc truy vấn các ID ứng dụng được tạo ra từ một thời điểm nhất định.

Mục Lục

Cài Đặt Môi Trường

Trước khi bắt đầu, bạn cần cài đặt Node.js và MongoDB trên máy tính của mình. Nếu bạn chưa cài đặt, hãy làm theo các bước sau:

  1. Cài Đặt Node.js: Truy cập trang chủ Node.js để tải xuống và cài đặt phiên bản mới nhất.
  2. Cài Đặt MongoDB: Truy cập trang chủ MongoDB để tải xuống và cài đặt MongoDB Community Server.
  3. Cài Đặt Thư Viện MongoDB cho Node.js: Sử dụng npm để cài đặt thư viện MongoDB:
    bash Copy
    npm install mongodb

Cấu Trúc Dữ Liệu

Trong ví dụ này, chúng ta sẽ làm việc với một bộ sưu tập có tên là application. Mỗi tài liệu trong bộ sưu tập này sẽ chứa các trường như createdTimeStamp.dateTimeapplicationId. Dưới đây là ví dụ về định dạng tài liệu:

json Copy
{
  "applicationId": "6ef60b66...",
  "createdTimeStamp": {
    "dateTime": "2025-09-19T04:00:00Z"
  }
}

Truy Vấn Dữ Liệu

Chúng ta sẽ viết một script Node.js để truy vấn các ID ứng dụng được tạo ra từ một thời điểm nhất định, ví dụ như từ thứ Sáu tuần trước. Dưới đây là mã nguồn chi tiết:

Mã Nguồn

javascript Copy
// findAppIdsCreatedSinceFriday.js
// Sử dụng: MONGO_URI="mongodb://..." node findAppIdsCreatedSinceFriday.js

const { MongoClient } = require("mongodb");

(async () => {
  const uri = process.env.MONGO_URI || "mongodb://localhost:27017";
  const dbName = process.env.DB_NAME || "som";
  const collName = process.env.COLL_NAME || "application";

  // 🔒 Ngày và giờ của thứ Sáu bạn muốn
  const FRIDAY_ISO_UTC = "2025-09-19T04:00:00Z";

  const boundary = new Date(FRIDAY_ISO_UTC);
  const boundaryISO = boundary.toISOString();

  const client = new MongoClient(uri);

  try {
    await client.connect();
    const coll = client.db(dbName).collection(collName);

    console.log("Giới hạn (UTC):", boundaryISO);

    const filter = {
      $or: [
        { "createdTimeStamp.dateTime": { $gte: boundary } },
        {
          $and: [
            { "createdTimeStamp.dateTime": { $type: "string" } },
            { "createdTimeStamp.dateTime": { $gte: boundaryISO } }
          ]
        }
      ]
    };

    const projection = { _id: 0, applicationId: 1 };

    const cursor = coll.find(filter, { projection }).batchSize(1000);

    let count = 0;
    for await (const doc of cursor) {
      if (doc && doc.applicationId != null) {
        console.log(String(doc.applicationId));
        count++;
      }
    }
    console.log("Số lượng khớp:", count);
  } catch (err) {
    console.error("Lỗi:", err);
  } finally {
    await client.close();
  }
})();

Giải Thích Mã Nguồn

  • Kết Nối đến MongoDB: Sử dụng MongoClient để kết nối đến cơ sở dữ liệu MongoDB.
  • Truy Vấn Thời Gian: Dùng Date để xác định thời gian giới hạn cho truy vấn.
  • Lọc Dữ Liệu: Sử dụng $or để tìm các tài liệu có trường createdTimeStamp.dateTime lớn hơn hoặc bằng thời gian giới hạn.
  • Hiển Thị Kết Quả: Đếm và hiển thị số lượng ID ứng dụng đã khớp.

Thực Hành

Hãy thực hiện các bước dưới đây để chạy script truy vấn:

  1. Tạo một file mới tên là findAppIdsCreatedSinceFriday.js.
  2. Sao chép mã nguồn ở trên vào file này.
  3. Đảm bảo rằng bạn đã cài đặt MongoDB và đang chạy nó trên máy cục bộ.
  4. Chạy script:
    bash Copy
    MONGO_URI="mongodb://localhost:27017" node findAppIdsCreatedSinceFriday.js

Thực Tiễn Tốt Nhất

  • Sử Dụng Biến Môi Trường: Luôn sử dụng biến môi trường để quản lý thông tin kết nối cơ sở dữ liệu.
  • Bảo Mật Dữ Liệu: Đảm bảo rằng thông tin kết nối không bị lộ ra ngoài mã nguồn.
  • Kiểm Tra Lỗi: Luôn kiểm tra và xử lý lỗi khi thực hiện truy vấn.

Cạm Bẫy Thông Thường

  • Thời Gian Không Đúng: Đảm bảo rằng bạn đã chuyển đổi đúng múi giờ khi sử dụng thời gian UTC.
  • Lỗi Kết Nối: Kiểm tra xem MongoDB có đang chạy hay không trước khi thực hiện truy vấn.

Mẹo Hiệu Suất

  • Sử Dụng BatchSize: Chia kết quả thành các khối nhỏ để giảm tải cho bộ nhớ.
  • Tối Ưu Truy Vấn: Sử dụng index trên các trường thường xuyên được truy vấn để tăng tốc độ.

Giải Quyết Vấn Đề

Nếu bạn gặp lỗi, hãy kiểm tra các điểm sau:

  • Kết nối đến MongoDB có thành công không?
  • Trường dữ liệu có tồn tại trong bộ sưu tập không?
  • Có lỗi nào được ghi lại không? Hãy kiểm tra các thông báo lỗi trong console.

Kết Luận

Bài viết này đã hướng dẫn bạn cách sử dụng Node.js để truy vấn dữ liệu từ MongoDB. Qua ví dụ cụ thể, bạn đã được làm quen với cách kết nối và truy vấn dữ liệu, cũng như những thực tiễn tốt nhất trong quá trình phát triển. Đừng ngần ngại thử nghiệm và áp dụng vào dự án của bạn!

Câu Hỏi Thường Gặp

1. Làm thế nào để cài đặt MongoDB?

Bạn có thể tải xuống MongoDB từ trang web chính thức và làm theo hướng dẫn cài đặt.

2. Có thể sử dụng Node.js cho các dự án lớn không?

Có, Node.js rất mạnh mẽ và có thể xử lý các ứng dụng quy mô lớn với hiệu suất cao.

3. Làm thế nào để tối ưu hóa truy vấn MongoDB?

Sử dụng index trên các trường thường xuyên được tìm kiếm và tránh các truy vấn phức tạp không cần thiết.

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