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

Tìm một document duy nhất trong MongoDB với findOne()

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.