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

Khác biệt giữa find() và findOne() trong MongoDB?

Sự khác biệt chính giữa find() và findOne() trong MongoDB:

  • findOne(): Trả về document đầu tiên khớp điều kiện, hoặc null nếu không tìm thấy
  • find(): Trả về một con trỏ (cursor) đến tập kết quả, không bao giờ trả về null (dày cursor rõng trả về cursor rỗng)

Minh họa với collection rỗng

Tạo collection rỗng:

> db.createCollection('emptyCollection');
{ "ok" : 1 }

Kiểm tra số document:

> db.emptyCollection.count();
0

Kiểm tra findOne() trên collection rỗng

> if(db.emptyCollection.findOne()){print("Returns Cursor")} else {print("Not returning cursor")}
Not returning cursor

findOne() trả về null nên điều kiện if đánh giá là false.

Kiểm tra find() trên collection rỗng

> if(db.emptyCollection.find()){print("Returns Cursor")} else {print("Not returning cursor")}
Returns Cursor

find() trả về cursor (dù rỗng) nên điều kiện if đánh giá là true.

Tóm tắt

Phương thứcTrả vềKhi không khớpSử dụng khi
findOne()Document hoặc nullnullChỉ cần 1 document, kiểm tra tồn tại
find()CursorCursor rỗngCần nhiều document, lặp qua kết quả

Hiểu rõ sự khác biệt này giúp tránh lỗi logic khi kiểm tra kết quả truy vấn trong ứng dụng.