全文搜索 ($text)
$text 文本索引全文搜索
语法
db.collection.find({ $text: { $search: "<keywords>" } }, { score: { $meta: "textScore" } }).sort({ score: { $meta: "textScore" } })说明
$text 操作符用于对文本索引执行全文搜索。先创建 text 类型索引,然后使用 $search 关键词、$language 语言选项和 $caseSensitive 等参数进行搜索。支持文本评分 ($meta: "textScore") 排序。
参数
$search必填搜索关键词,空格分隔多词为 OR 逻辑,引号短语精确匹配,-排除
$language分词语言,如 "zh"(中文)、"en"(英文)、"none"(不分词)
$caseSensitive是否区分大小写,默认 false
$diacriticSensitive是否区分变音符号,默认 false
示例
创建文本索引
对标题和内容建全文索引
db.articles.createIndex({ title: "text", content: "text" })基本搜索
搜索包含 mongodb 的文档
db.articles.find({ $text: { $search: "mongodb" } })短语搜索
精确搜索完整短语
db.articles.find({ $text: { $search: "\"replica set\"" } })相关度排序
按文本匹配得分排序
db.articles.find({ $text: { $search: "mongodb aggregation" } }, { score: { $meta: "textScore" } }).sort({ score: { $meta: "textScore" } })排除关键词
搜索包含 mongodb 但不含 atlas 的文档
db.articles.find({ $text: { $search: "mongodb -atlas" } })