Phương thức findOne() trả về chỉ một document đầu tiên khớp với điều kiện, hữu ích khi chỉ cần mẫu hoặc biết chắc chỉ có 1 kết quả.
Dữ liệu mẫu
> db.demo116.insertOne({"EmployeeId":101,"EmployeeName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eff98d8f64a552dae635b") }
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eff9fd8f64a552dae635c") }
> db.demo116.insertOne({"EmployeeId":103,"EmployeeName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2effa5d8f64a552dae635d") }
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2effb7d8f64a552dae635e") }
Truy vấn findOne
> db.demo116.findOne({"EmployeeId":102});
Kết quả
{ "_id" : ObjectId("5e2eff9fd8f64a552dae635c"), "EmployeeId" : 102, "EmployeeName" : "Bob" }
Đặc điểm:
- Trả về document đầu tiên theo thứ tự tự nhiên (thường là thứ tự insert)
- Có 2 document EmployeeId=102 (Bob và Mike) → chỉ trả Bob
- Tương đương
find().limit(1)nhưng trả về object thay vì cursor - Hiệu quả hơn
find()khi chỉ cần 1 kết quả (dừng sớm)
Lưu ý: Nếu cần document cụ thể (ví dụ Mike), hãy thêm điều kiện lọc: {EmployeeId: 102, EmployeeName: "Mike"} hoặc sort trước khi findOne.