MongoDB lưu trữ hàm JavaScript trong collection hệ thống system.js để đóng vai trò như stored procedure.
Cú pháp
db.system.js.save({
_id: "tenThuTuc",
value: function(thamSo1, ..., thamSoN) {
// các câu lệnh
return ketQua;
}
});
Ví dụ: Tạo thủ tục cộng hai số
> db.system.js.save({
_id: "congHaiSo",
value: function(a, b) {
return a + b;
}
});
WriteResult({ "nMatched": 0, "nUpserted": 1, "nModified": 0, "_id": "congHaiSo" })
Gọi thủ tục
> db.eval("return congHaiSo(100, 25)");
125
⚠️ Cảnh báo quan trọng: db.eval() đã bị deprecated từ MongoDB 3.0 và removed từ MongoDB 4.4. Cách hiện đại:
- Xử lý logic ở application layer (Node.js, Python, Java...)
- Dùng Aggregation Pipeline với
$function(MongoDB 4.4+) - Dùng MongoDB Realm Functions cho serverless logic
Bài viết này chỉ mang tính tham khảo lịch sử.