$text(全文搜索)

最后更新:2026-10-09

$text(全文搜索)

$text 对已建文本索引的字段执行全文搜索。`{ $text: { $search: 'coffee shop' } }`。使用前必须创建 text 索引(db.collection.createIndex({ content: 'text' })),一个集合最多一个 text 索引。支持词干化、停用词过滤、短语搜索(双引号包裹),可用 $meta: 'textScore' 获取相关度得分并排序。

分类元素与求值
MongoDB 版本2.6+
示例语言mongosh (Shell)

📝 语法

{ $text: { $search: <字符串>, $language: <语言>, $caseSensitive: <布尔> } }

⚙️ 参数

search要搜索的关键词或短语。
language可选,指定词干化语言。
caseSensitive可选,是否大小写敏感。

返回值:匹配的文档游标

▶ 示例

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

// $text:全文搜索 coffee shop
// 需先建 text 索引
db.articles.find({ $text: { $search: 'coffee shop' } })

// 按相关度排序(textScore)
db.articles.find(
  { $text: { $search: 'coffee' } },
  { score: { $meta: 'textScore' } }
).sort({ score: { $meta: 'textScore' } })

运行结果:

// 返回包含 coffee 或 shop 词干的文章;第二个示例按相关度降序返回

📌 注意事项

📚 相关教程

❓ 常见问题

Q$text 之前要做什么?
A先在字段上创建文本索引:db.coll.createIndex({ content: 'text' })。
Q$text 和 $regex 有什么区别?
A$text 用文本索引做词级搜索,支持词干化与评分;$regex 是模式匹配,通常全表扫描。
Q$text 搜索怎么按相关度排序?
A用投影 $meta: 'textScore' 取出得分,再 sort({ score: { $meta: 'textScore' } })。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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