文档菜单
文档首页
/
MongoDB 手册

服务器端 JavaScript

本页内容

  • 运行.js 文件通过服务器上的 mongosh 实例
  • 禁用服务器端 JavaScript 执行
  • 行为

重要

服务器端 JavaScript 已弃用

从 MongoDB 8.0 开始,服务器端 JavaScript 函数($accumulator$function$where)已弃用。当你运行这些函数时,MongoDB 会记录一条警告信息。

Map-reduce 从 MongoDB 5.0 开始已弃用。

MongoDB 提供以下命令、方法和运算符,用于执行服务器端 JavaScript 代码

  • mapReduce 和相应的mongosh 方法 db.collection.mapReduce()。更多信息,请参阅Map-Reduce。

  • $where 操作符,用于评估 JavaScript 表达式或函数以查询文档。

  • $accumulator$function 聚合操作,允许用户定义自定义聚合表达式。

您还可以指定一个 JavaScript 文件在 mongosh 上运行。更多信息,请参阅在服务器上通过 mongosh 实例运行 .js 文件

注意

MongoDB 中的 JavaScript

尽管这些方法使用 JavaScript,但与 MongoDB 的大多数交互都不使用 JavaScript,而是使用交互应用程序语言的惯用驱动程序。

如果您不需要在服务器端执行 JavaScript 代码,请参阅禁用服务器端 JavaScript 执行。

注意

如果您正在使用 SELinux,任何需要 服务器端 JavaScript 的 MongoDB 操作都将导致段错误。 禁用服务器端 JavaScript 执行 描述了如何禁用服务器端 JavaScript 的执行。

您可以为 mongosh 指定一个 JavaScript (.js) 文件,以便在服务器上执行该文件。这是一种执行批量管理工作的好方法。当您在服务器上运行 mongosh 时,通过 localhost 接口连接,连接快速且延迟低。

您可以通过禁用所有服务器端JavaScript执行来实现这一点

  • 通过在命令行中传递mongod实例的--noscripting选项或在配置文件中将security.javascriptEnabled设置为false来禁用。

  • 通过在命令行中传递mongos实例的--noscripting选项或在配置文件中将security.javascriptEnabled设置为false来禁用。

有关并发信息,请参考各个方法或操作符的文档。另请参阅并发表。

MongoDB 6.0 将用于 服务器端JavaScript$accumulator$function$where 表达式的内部JavaScript引擎从 MozJS-60 升级到 MozJS-91。在 MozJS-60 中存在的几个已弃用、非标准的数组和字符串函数在 MozJS-91 中被移除。

有关移除的数组和字符串函数的完整列表,请参阅 6.0 兼容性说明。

下一步

什么是MongoDB?