JavaScript(代码)

最后更新:2026-10-09

JavaScript(代码)

JavaScript类型用于在文档中存储JS代码,配合`$where`在服务端执行(逐文档运行)。`$where`无法利用索引且性能差,仅适合小集合或无法用查询操作符表达的复杂逻辑。注意:MongoDB 8.0起默认禁用服务端JavaScript执行,需要显式启动参数;新代码优先用`$expr`或`$function`聚合操作符。

分类BSON 类型
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $where: "this.price * this.qty > 100" }
{ $expr: { $gt: [{ $multiply: ["$price", "$qty"] }, 100] } }

返回值:$where返回满足条件的文档;存储的JS值是代码字符串

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// JavaScript:$where服务端执行
use shop
db.orders.find({ $where: 'this.price * this.qty > 1000' })

运行结果:

// 返回price×qty大于1000的订单(全表扫描)

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q$where为什么慢?
A它逐文档调用JS解释器,无法利用索引,只能全表扫描。
QMongoDB 8.0还能用$where吗?
A默认禁用,启动需加--enableJavaScriptExecution参数。
Q复杂跨字段比较怎么写?
A用$expr配合$multiply等聚合操作符,可走优化器且部分利用索引。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏