在服务器上存储 JavaScript 函数
特殊系统集合 system.js
可以存储 JavaScript 函数,以供重复使用。
开始之前
此任务使用旧版 mongo
Shell 从system.js
集合加载服务器端函数。不再支持此版本的 Shell。有关 MongoDB Shell 中的替代解决方案,请参阅写入脚本。
关于此任务
使用system.js
时请考虑以下建议:
不要在数据库中存储应用程序逻辑。
在 MongoDB 中运行 JavaScript 存在性能限制。
应用程序代码在与应用程序共享版本控制时最为有效。
步骤
要存储函数,请将函数插入system.js
集合,如以下示例所示:
1
2
在数据库中存储 JavaScript 函数
要将 JavaScript 函数存储在数据库中,请插入包含以下字段的文档:
_id
字段包含函数名称,在每个数据库中都是唯一的。value
字段保存函数定义。
以下示例在system.js
集合中创建一个echo
函数:
db.system.js.insertOne( { _id: "echo", value : function(x) { return x; } } )
以下示例在system.js
集合中创建一个isEven
函数:
db.system.js.insertOne( { _id: "isEven", value: function (num) { return num % 2 === 0; } } )
这些函数保存为 BSON 类型,可用于任何 JavaScript 上下文,如 mapReduce
和 $where
。
注意
保存为已弃用的 BSON 类型JavaScript(带作用域)的函数不能由mapReduce
和$where
使用。