Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Làm việc với find() trong MongoDB

Phương thức find() là lệnh truy vấn cơ bản và phổ biến nhất trong MongoDB. Nó chọn tài liệu từ collection/view và trả về một **con trỏ (cursor)** để lặp qua các kết quả. Hiểu rõ find() là nền tảng của mọi thao tác đọc dữ liệu.

1. Cú pháp cơ bản

db.collection.find(query, projection)
  • query (object): Điều kiện lọc (filter). Rỗng {} hoặc không truyền = lấy tất cả.
  • projection (object): Chọn trường hiển thị/ẩn. { field: 1 } hiển thị, { field: 0 } ẩn. _id mặc định = 1.

2. Ví dụ: Tạo collection và chèn dữ liệu lồng nhau

> db.demo405.insertOne({ "StudentInfo": { "Name": "Chris" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "David" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "Bob" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "John" } });

3. find() không tham số: Lấy tất cả tài liệu, tất cả trường

> db.demo405.find();

Kết quả:

{ "_id": ObjectId("..."), "StudentInfo": { "Name": "Chris" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "David" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "Bob" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "John" } }

4. Các biến thể hay dùng

  • find({ "StudentInfo.Name": "Chris" }): Lọc tên = Chris (dot notation truy cập field lồng).
  • find({}, { "StudentInfo.Name": 1, _id: 0 }): Chỉ lấy tên, ẩn _id.
  • find().limit(10): Giới hạn 10 kết quả.
  • find().sort({ "StudentInfo.Name": 1 }): Sắp xếp A-Z.
  • find().skip(5).limit(10): Phân trang (bỏ 5, lấy 10).

Lưu ý: find() trả về **cursor**, chưa lấy dữ liệu thật sự cho đến khi duyệt (toArray, forEach, next, hoặc shell tự in 20 bản ghi đầu).