Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Làm việc với Stored JavaScript trong MongoDB

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 $function trong aggregation (MongoDB 4.4+) - sandboxed, hạn chế
  • Dùng $accumulator cho custom aggregation logic

Xem stored functions: db.system.js.find(). Xóa: db.system.js.remove({_id: "funcName"}).