Bạn nên sử dụng find
, giống như bạn đã làm, và không tổng hợp sẽ chậm hơn vì nó cần quét tất cả giá trị của các trường _id để tìm ra giá trị tối đa.
Như các nhận xét đã chỉ ra rằng có không sự khác biệt giữa việc sử dụng find () và findOne () - về mặt chức năng hoặc về mặt thanh lịch. Trên thực tế, findOne
trong shell (và trong các trình điều khiển triển khai nó) được xác định theo nghĩa tìm kiếm (với giới hạn -1 và với chữ in đẹp trong shell).
Nếu bạn thực sự muốn làm tương đương với
db.collection.find().sort({_id:-1}).limit(1).pretty()
dưới dạng findOne
bạn có thể làm điều đó với cú pháp sau:
db.collection.findOne({$query:{},$orderby:{_id:-1}})