Node.js - MongoDB Tìm kiếm

Xin chào các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Node.js và MongoDB. Cụ thể, chúng ta sẽ khám phá cách lấy dữ liệu từ cơ sở dữ liệu MongoDB sử dụng Node.js. Đừng lo lắng nếu bạn mới bắt đầu - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Cuối cùng của bài hướng dẫn này, bạn sẽ tìm được tài liệu như một chuyên gia!

Node.js - MongoDB Find

Giới thiệu về MongoDB và Node.js

Trước khi chúng ta đi vào chi tiết về việc tìm kiếm tài liệu, hãy dành một chút thời gian để hiểu MongoDB và Node.js là gì.

MongoDB là một cơ sở dữ liệu NoSQL phổ biến lưu trữ dữ liệu trong các tài liệu linh hoạt, tương tự JSON. Nó giống như một tủ tài liệu kỹ thuật số khổng lồ nơi bạn có thể lưu trữ mọi loại thông tin.

Node.js, mặt khác, là một môi trường chạy JavaScript cho phép bạn chạy JavaScript trên máy tính của bạn, bên ngoài trình duyệt web. Nó giống như cấp cho JavaScript siêu năng lực để tương tác với hệ thống tệp, mạng và trong trường hợp của chúng ta, cơ sở dữ liệu như MongoDB.

Bây giờ, hãy cùng bắt đầu với một chút mã!

Thiết lập Môi trường

Trước hết, chúng ta cần thiết lập dự án của mình. Dưới đây là những gì bạn cần làm:

  1. Cài đặt Node.js từ trang web chính thức nếu bạn chưa cài đặt.
  2. Tạo một thư mục mới cho dự án của bạn.
  3. Mở một terminal trong thư mục đó và chạy npm init -y để tạo file package.json.
  4. Cài đặt driver MongoDB bằng cách chạy npm install mongodb.

Tuyệt vời! Bây giờ chúng ta đã sẵn sàng để bắt đầu lập trình.

Kết nối đến MongoDB

Trước khi chúng ta có thể tìm kiếm bất kỳ tài liệu nào, chúng ta cần kết nối đến cơ sở dữ liệu MongoDB. Dưới đây là cách chúng ta làm điều đó:

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

const url = 'mongodb://localhost:27017';
const dbName = 'myProject';

async function connectToDatabase() {
  const client = new MongoClient(url);

  try {
    await client.connect();
    console.log('Kết nối thành công đến cơ sở dữ liệu');
    const db = client.db(dbName);
    return db;
  } catch (error) {
    console.error('Không thể kết nối đến cơ sở dữ liệu', error);
    throw error;
  }
}

Hãy phân tích điều này:

  1. Chúng ta import MongoClient từ gói mongodb.
  2. Chúng ta xác định URL nơi máy chủ MongoDB của chúng ta đang chạy và tên của cơ sở dữ liệu.
  3. Chúng ta tạo một hàm async connectToDatabase() để thiết lập kết nối đến máy chủ MongoDB của chúng ta.
  4. Nếu kết nối thành công, chúng ta trả về đối tượng cơ sở dữ liệu. Nếu không, chúng ta ghi lỗi.

Đọc Tất Cả Các Tài Liệu

Bây giờ chúng ta đã kết nối, hãy học cách lấy tất cả các tài liệu từ một bộ sưu tập. Chúng ta sẽ sử dụng phương thức find() cho điều này.

async function findAllDocuments(db, collectionName) {
  const collection = db.collection(collectionName);

  try {
    const documents = await collection.find({}).toArray();
    console.log('Tìm thấy các tài liệu sau:');
    console.log(documents);
    return documents;
  } catch (error) {
    console.error('Lỗi tìm kiếm tài liệu:', error);
    throw error;
  }
}

Dưới đây là những gì đang diễn ra:

  1. Chúng ta lấy một tham chiếu đến bộ sưu tập sử dụng db.collection(collectionName).
  2. Chúng ta sử dụng find({}) để lấy tất cả các tài liệu. Object rỗng {} có nghĩa là chúng ta không áp dụng bất kỳ bộ lọc nào.
  3. Chúng ta chuyển đổi kết quả thành một mảng sử dụng toArray().
  4. Chúng ta ghi và trả về các tài liệu.

Để sử dụng hàm này, bạn sẽ làm điều gì đó như sau:

async function main() {
  const db = await connectToDatabase();
  await findAllDocuments(db, 'users');
}

main().catch(console.error);

Sử dụng findOne()

Đôi khi, bạn chỉ cần lấy một tài liệu duy nhất. Đó là lúc findOne() phát huy tác dụng. Hãy tạo một hàm cho điều này:

async function findOneDocument(db, collectionName, query) {
  const collection = db.collection(collectionName);

  try {
    const document = await collection.findOne(query);
    if (document) {
      console.log('Tìm thấy một tài liệu:');
      console.log(document);
    } else {
      console.log('Không có tài liệu khớp với truy vấn.');
    }
    return document;
  } catch (error) {
    console.error('Lỗi tìm kiếm tài liệu:', error);
    throw error;
  }
}

Dưới đây là những gì hàm này làm:

  1. Chúng ta sử dụng findOne(query) để lấy một tài liệu duy nhất khớp với truy vấn của chúng ta.
  2. Nếu tìm thấy tài liệu, chúng ta ghi và trả về nó. Nếu không, chúng ta ghi một thông báo rằng không có tài liệu nào khớp.

Bạn sẽ sử dụng hàm này như sau:

async function main() {
  const db = await connectToDatabase();
  await findOneDocument(db, 'users', { name: 'John Doe' });
}

main().catch(console.error);

Điều này sẽ tìm thấy người dùng đầu tiên có tên 'John Doe'.

Bảng Phương thức

Dưới đây là bảng phương thức chúng ta đã xem xét:

Phương thức Mô tả Ví dụ
find() Lấy nhiều tài liệu collection.find({})
findOne() Lấy một tài liệu duy nhất collection.findOne({ name: 'John' })

Kết luận

Chúc mừng! Bạn đã học cách tìm kiếm tài liệu trong MongoDB sử dụng Node.js. Chúng ta đã xem xét việc kết nối đến cơ sở dữ liệu, lấy tất cả các tài liệu và tìm kiếm một tài liệu duy nhất. Đây là những kỹ năng cơ bản mà bạn sẽ sử dụng trong hầu như mọi dự án MongoDB.

Nhớ rằng, thực hành là cách tốt nhất để thành thạo. Hãy thử tạo một dự án nhỏ để áp dụng các khái niệm này. Có thể là một sổ địa chỉ đơn giản hoặc danh sách công việc? Các khả năng là vô tận!

Chúc các bạn lập trình vui vẻ, và hy vọng các truy vấn của bạn luôn trả về các tài liệu bạn đang tìm kiếm!

Credits: Image by storyset