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

Sử dụng findOne() trong MongoDB

Phương thức findOne() trả về một document duy nhất khớp với điều kiện, hoặc null nếu không tìm thấy. Tối ưu cho trường hợp cần 1 kết quả.

Dữ liệu mẫu (có trùng tên)

> db.demo230.insertOne({"FirstName":"Chris"});
> db.demo230.insertOne({"FirstName":"Bob"});
> db.demo230.insertOne({"FirstName":"Chris"});
> db.demo230.insertOne({"FirstName":"David"});
> db.demo230.insertOne({"FirstName":"David"});

Truy vấn findOne

> db.demo230.findOne({"FirstName":"David"});

Kết quả (chỉ 1 document dù có 2 "David")

{ "_id" : ObjectId("5e3fc4dff4cebbeaebec5141"), "FirstName" : "David" }

Đặc điểm so sánh:

Đặc điểmfind()findOne()
Trả vềCursorDocument hoặc null
Số lượngTất cả khớpĐầu tiên khớp
Duyệt.forEach(), .toArray()Trực tiếp dùng object
Hiệu suấtChậm hơn nếu limit 1Tối ưu cho 1 kết quả
ProjectionTham số 2Tham số 2
Sort.sort()Không hỗ trợ trực tiếp

Mẹo: Cần sort trước khi findOne? Dùng find().sort({...}).limit(1).

Upsert pattern: findOneAndUpdate({}, {$setOnInsert: {...}}, {upsert: true, returnDocument: 'after'}).