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

Lấy trường cụ thể trong MongoDB (Projection với findOne)

Vấn đề

Chỉ cần lấy giá trị của một trường (field) cụ thể từ document thỏa mãn điều kiện, không cần toàn bộ document.

Giải pháp: findOne() với projection

Cú pháp:

db.collection.findOne({"fieldDieuKien": giaTri}, {fieldCanLay: 1})
  • Tham số 1: filter (điều kiện tìm kiếm).
  • Tham số 2: projection - chỉ định trường cần lấy (1 = lấy, 0 = không lấy). _id mặc định trả về trừ khi đặt _id: 0.

Ví dụ minh họa

1. Tạo collection nhân viên

> db.particularFieldDemo.insertOne({"EmployeeName":"John Smith","EmployeeAge":26,"EmployeeTechnology":"MongoDB"});
> db.particularFieldDemo.insertOne({"EmployeeName":"Chris Brown","EmployeeAge":28,"EmployeeTechnology":"Java"});
> db.particularFieldDemo.insertOne({"EmployeeName":"David Miller","EmployeeAge":30,"EmployeeTechnology":"MySQL"});
> db.particularFieldDemo.insertOne({"EmployeeName":"John Doe","EmployeeAge":31,"EmployeeTechnology":"C++"});

2. Lấy EmployeeName của người dùng Technology = "Java"

> db.particularFieldDemo.findOne({"EmployeeTechnology":"Java"}, {EmployeeName: 1});

3. Kết quả

{ "_id" : ObjectId("5cd9b4d2b50a6c6dd317ada3"), "EmployeeName" : "Chris Brown" }

Lưu ý

  • findOne() trả về 1 document đầu tiên khớp (theo natural order).
  • Cần nhiều document → dùng find() với projection: db.coll.find({filter}, {field:1}).
  • Projection cũng áp dụng trong aggregation: {$project: {field: 1}}.