$meta(文本搜索元数据)
最后更新:2026-10-09
$meta(文本搜索元数据)
$meta 在投影中返回 $text 搜索的附加元数据,最常用的是文本相关度得分 textScore。`{ score: { $meta: 'textScore' } }`。必须与 $text 查询搭配使用,且要先用投影取出 textScore 才能按它排序。用于实现按相关度排序的搜索结果页。
| 分类 | 投影 |
|---|---|
| MongoDB 版本 | 2.6+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ <输出字段>: { $meta: 'textScore' } }
⚙️ 参数
| 输出字段 | 接收元数据的字段名,如 score。 |
|---|---|
| 元数据名 | 目前为 'textScore'。 |
返回值:带额外元数据字段的查询结果
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $meta:取出 textScore 并按相关度排序
// 投影和排序都要写 $meta
db.articles.find(
{ $text: { $search: 'mongodb' } },
{ title: 1, score: { $meta: 'textScore' } }
).sort({ score: { $meta: 'textScore' } })
运行结果:
// 返回文章标题与相关度得分,按得分降序排列
📌 注意事项
- 必须与 $text 查询配合使用
- 排序前必须先投影 textScore
- textScore 数值越大相关度越高
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$meta 能返回哪些元数据?
A目前主要是 textScore(文本相关度得分)。
Q为什么排序前要先投影 textScore?
Asort 只能引用查询中可见的字段,需先投影出来才能用。
Q$meta 只能用于 $text 吗?
A是,它专属于文本搜索场景。