MongoDB cho phép lưu trữ hàm JavaScript trong collection hệ thống system.js để tái sử dụng. Sử dụng db.system.js.save(). Cú pháp:
db.system.js.save({
_id: "anyFunctionName",
value: function (returnValue) {
return 'yourMessage ' + returnValue;
}
})
Ví dụ lưu hàm returnValue nối tiền tố "The value==== ":
> db.system.js.save({
_id: "returnValue",
value: function (data) {
return 'The value==== ' + data;
}
})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Gọi hàm đã lưu với db.eval() (deprecated):
> db.eval("returnValue(20)")
WARNING: db.eval is deprecated
Kết quả:
The value==== 20
⚠️ CẢNH BÁO QUAN TRỌNG:
db.eval()**đã deprecated từ MongoDB 3.0**, bị xóa từ 4.4+- Stored JavaScript **không khuyến khích** dùng trong production
- Hiệu suất kém, không dùng index, khóa global lock (trước 2.6)
- Rủi ro bảo mật (injection), khó debug, không version control
Thay thế hiện đại:
- Xử lý logic ở **application layer** (Node.js, Python, Java...)
- Dùng
$functiontrong aggregation (MongoDB 4.4+) - sandboxed, hạn chế - Dùng
$accumulatorcho custom aggregation logic
Xem stored functions: db.system.js.find(). Xóa: db.system.js.remove({_id: "funcName"}).