Regular Expression(正则表达式)
最后更新:2026-10-09
Regular Expression(正则表达式)
Regular Expression是BSON中的正则类型,用于查询时的模式匹配,等价于查询条件`{ field: /pattern/ }`,支持PCRE语法与选项(i忽略大小写、m多行、s点号匹配换行、x忽略空白)。注意:无前缀锚定的正则无法利用索引,会全表扫描,大数据集上要慎用。
| 分类 | BSON 类型 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ field: /^prefix/ }
{ field: /pattern/i }
new RegExp("pattern", "i")
返回值:正则值本身;查询时返回匹配文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// Regular Expression:模式匹配查询
use shop
db.users.find({ name: /^alice/i })
db.products.find({ sku: { $regex: 'AB-\\d{4}' } })
运行结果:
// 返回以alice开头(忽略大小写)的用户,以及sku形如AB-1234的商品
📌 注意事项
- 前缀锚定(/^.../)才可能利用索引
- mongosh中/pattern/字面量与$regex字符串等价
- 字符串里的反斜杠要双写(\\d)
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q正则查询能用索引吗?
A只有以固定前缀开头的模式(如/^abc/)能利用索引,其余全表扫描。
Q$regex和/pattern/一样吗?
A一样,都是构造正则查询,$regex接受字符串形式。
Q正则性能差怎么办?
A改前缀匹配加普通索引,或建text索引做全文搜索。