Docs 菜单
Docs 主页
/
MongoDB Manual

在服务器上存储 JavaScript 函数

在此页面上

  • 开始之前
  • 关于此任务
  • 步骤

特殊系统集合 system.js 可以存储 JavaScript 函数,以供重复使用。

此任务使用旧版 mongo Shell 从system.js集合加载服务器端函数。不再支持此版本的 Shell。有关 MongoDB Shell 中的替代解决方案,请参阅写入脚本。

使用system.js时请考虑以下建议:

  • 不要在数据库中存储应用程序逻辑。

  • 在 MongoDB 中运行 JavaScript 存在性能限制。

  • 应用程序代码在与应用程序共享版本控制时最为有效。

要存储函数,请将函数插入system.js集合,如以下示例所示:

1
db.test_numbers.insertMany([
{ value: 1 },
{ value: 2 },
{ value: 3 },
{ value: 4 },
{ value: 5 },
{ value: 6 }
])
2

要将 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使用。

3
db.loadServerScripts()
4
  1. 以下代码示例运行存储在system.js中的echo函数:

    echo("test")
  2. 以下代码示例在test_numbers集合上运行$where操作符中system.js中存储的isEven函数:

    db.test_numbers.find({
    $where: function () {
    return isEven(this.value);
    }
    })

来年

MongoDB 是什么?