Using Mongoose
Có thể phân loại các hàm trong Mongoose theo chức năng chính của chúng như sau để dễ nhớ và sử dụng:
1. Nhóm hàm tìm kiếm (Querying)
Các hàm trong nhóm này được sử dụng để truy vấn tài liệu từ cơ sở dữ liệu.
find(): Tìm nhiều tài liệu thỏa mãn điều kiện.- Ví dụ:
Model.find({ age: { $gt: 25 } });
- Ví dụ:
findOne(): Tìm một tài liệu duy nhất thỏa mãn điều kiện.- Ví dụ:
Model.findOne({ name: 'John' });
- Ví dụ:
findById(): Tìm một tài liệu theo_id.- Ví dụ:
Model.findById('id_cua_tai_lieu');
- Ví dụ:
countDocuments(): Đếm số tài liệu thỏa mãn điều kiện.- Ví dụ:
Model.countDocuments({ status: 'active' });
- Ví dụ:
2. Nhóm hàm thêm mới (Creating)
Các hàm này được dùng để tạo mới tài liệu trong cơ sở dữ liệu.
create(): Tạo một hoặc nhiều tài liệu mới.- Ví dụ:
Model.create({ name: 'John', age: 30 });
- Ví dụ:
save(): Lưu tài liệu mới hoặc tài liệu đã thay đổi (phải tạo đối tượng tài liệu trước).- Ví dụ:
const doc = new Model({ name: 'Jane', age: 25 }); doc.save();
- Ví dụ:
3. Nhóm hàm cập nhật (Updating)
Các hàm này được sử dụng để cập nhật tài liệu trong cơ sở dữ liệu.
updateOne(): Cập nhật một tài liệu duy nhất thỏa mãn điều kiện.- Ví dụ:
Model.updateOne({ name: 'John' }, { age: 35 });
- Ví dụ:
updateMany(): Cập nhật nhiều tài liệu thỏa mãn điều kiện.- Ví dụ:
Model.updateMany({ status: 'active' }, { age: 40 });
- Ví dụ:
findOneAndUpdate(): Tìm và cập nhật tài liệu, có thể trả về tài liệu trước hoặc sau khi cập nhật.- Ví dụ:
Model.findOneAndUpdate({ name: 'John' }, { age: 35 }, { new: true });
- Ví dụ:
findByIdAndUpdate(): Tìm theo_idvà cập nhật tài liệu.- Ví dụ:
Model.findByIdAndUpdate('id_cua_tai_lieu', { age: 35 });
- Ví dụ:
4. Nhóm hàm xóa (Deleting)
Các hàm trong nhóm này được dùng để xóa tài liệu khỏi cơ sở dữ liệu.
deleteOne(): Xóa một tài liệu duy nhất thỏa mãn điều kiện.- Ví dụ:
Model.deleteOne({ name: 'John' });
- Ví dụ:
deleteMany(): Xóa nhiều tài liệu thỏa mãn điều kiện.- Ví dụ:
Model.deleteMany({ status: 'inactive' });
- Ví dụ:
findOneAndDelete(): Tìm một tài liệu và xóa nó.- Ví dụ:
Model.findOneAndDelete({ name: 'John' });
- Ví dụ:
findByIdAndDelete(): Tìm theo_idvà xóa tài liệu.- Ví dụ:
Model.findByIdAndDelete('id_cua_tai_lieu');
- Ví dụ:
5. Nhóm hàm làm việc với bộ đếm (Counting and Estimation)
Các hàm này giúp đếm số lượng tài liệu trong cơ sở dữ liệu.
countDocuments(): Đếm số tài liệu thỏa mãn điều kiện (tốc độ nhanh hơnfind()khi chỉ cần đếm).- Ví dụ:
Model.countDocuments({ status: 'active' });
- Ví dụ:
estimatedDocumentCount(): Đếm tổng số tài liệu trong một collection, bỏ qua điều kiện.- Ví dụ:
Model.estimatedDocumentCount();
- Ví dụ:
6. Nhóm hàm bộ sưu tập (Aggregation)
Dùng để tổng hợp dữ liệu từ nhiều tài liệu và thực hiện các phép tính phức tạp.
aggregate(): Thực hiện các phép toán trên nhiều tài liệu.- Ví dụ:
Model.aggregate([ { $match: { status: 'active' } }, { $group: { _id: '$age', total: { $sum: 1 } } } ]);
- Ví dụ:
7. Nhóm hàm khác
lean(): Trả về tài liệu đơn giản dưới dạng JavaScript object, không phải đối tượng Mongoose đầy đủ (nhanh hơn).- Ví dụ:
Model.find({}).lean();
- Ví dụ:
populate(): Truy vấn và chèn tài liệu tham chiếu vào kết quả (dùng khi có liên kết giữa các model).- Ví dụ:
Model.find().populate('author');
- Ví dụ:
Tổng kết cách ghi nhớ:
- Tìm kiếm:
find,findOne,findById,countDocuments - Thêm mới:
create,save - Cập nhật:
updateOne,updateMany,findOneAndUpdate,findByIdAndUpdate - Xóa:
deleteOne,deleteMany,findOneAndDelete,findByIdAndDelete - Tổng hợp:
aggregate - Bộ đếm:
countDocuments,estimatedDocumentCount - Khác:
lean,populate
Việc phân loại theo chức năng giúp bạn dễ nhớ và sử dụng các hàm Mongoose trong các tình huống khác nhau.