重要
服务器端 JavaScript 已弃用
从MongoDB 8.0开始,服务器端JavaScript函数( $accumulator 、 $function 、 $where )已弃用。 运行这些函数时, MongoDB会记录警告。
从 MongoDB 5.0 开始,Map-reduce 已被弃用。
MongoDB 提供以下命令、方法和运算符,可在服务器端执行 JavaScript 代码:
mapReduce和相应的mongosh方法db.collection.mapReduce()。 有关详细信息,请参阅Map-Reduce。$where运算符,用于计算 JavaScript 表达式或函数以查询文档。$accumulator和$function聚合操作,允许用户定义自定义聚合表达式。
您还可以为mongosh指定要在服务器上运行的JavaScript文件。 有关更多信息,请参阅通过mongosh实例在服务器上运行.js文件
注意
MongoDB 中的 JavaScript
尽管这些方法使用 JavaScript,但与 MongoDB 进行的大多数交互并不使用 JavaScript,而是使用采用交互应用程序语言的惯用驱动程序。
如果您不需要在服务器端执行 JavaScript 代码,请参阅禁用服务器端执行 JavaScript。
注意
如果使用 SELinux,任何需要服务器端 JavaScript 的 MongoDB 操作都会导致 segfault 错误。禁用在服务器端执行 JavaScript 描述如何禁用在服务器端执行 JavaScript。
通过.js mongosh实例在服务器上运行 文件
您可以为mongosh指定 JavaScript ( .js ) 文件,以在服务器上执行该文件。 这是执行批处理管理工作的好方法。 当您在服务器上运行mongosh并通过本地主机接口进行连接时,连接速度快且延迟低。
禁用在服务器端执行 JavaScript
您可以禁用 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 中存在的几个已弃用的非标准大量和string函数已在 MozJS-91 中删除。