Đó là cú pháp gọi lại chính xác, nhưng find cung cấp cho cuộc gọi lại là một Cursor , không phải là một mảng tài liệu. Vì vậy, nếu bạn muốn lệnh gọi lại của mình cung cấp kết quả dưới dạng một mảng tài liệu, hãy gọi toArray trên con trỏ để trả về chúng:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Lưu ý rằng lệnh gọi lại hàm của bạn vẫn cần cung cấp err để người gọi biết truy vấn có hoạt động hay không.
Cập nhật trình điều khiển 2.x
find bây giờ trả về con trỏ thay vì cung cấp nó thông qua một lệnh gọi lại, do đó, cách sử dụng thông thường có thể được đơn giản hóa thành:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Hoặc trong trường hợp mong đợi một tài liệu duy nhất, thì đơn giản hơn là sử dụng findOne :
collection.findOne({'_id': o_id}, function(err, result) {...});