You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB如何使用$where运算符查询包含指定字符串的文档?

错误原因
  • 语法逻辑错误:==是相等判断运算符,无法直接判断字符串是否匹配正则表达式,且字符串类型和正则对象类型直接做相等判断永远返回false,自然没有查询结果。
  • 正则规则错误:你写的正则/$John$/中$是字符串结束锚定符,放在John前完全不符合匹配规则,且你需要的是包含John的结果,不应该添加首尾锚定符限制整个字符串的开头和结尾。
正确的$where查询实现

要在$where中判断字符串包含指定内容,调用正则的test()方法即可,正确写法如下:

db.HR.find({ $where: "/John/.test(this.name)" })

如果需要忽略大小写匹配,可以给正则加i修饰符:

db.HR.find({ $where: "/John/i.test(this.name)" })

注意:$where运算符会强制遍历集合内的所有文档执行JS逻辑,无法使用索引优化查询,性能远低于普通正则查询。如果没有必须使用$where的特殊场景,更推荐直接使用普通查询语句db.HR.find({name: /John/})实现相同需求。

内容的提问来源于stack exchange,提问作者Cristian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:57:03