服务器端 JavaScript
重要
服务器端 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 中删除。
有关已删除数组和字符串函数的完整列表,请参阅 6.0 兼容性说明。