服务器端 JavaScript
Overview
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 兼容性说明。