文档菜单
文档首页
/
MongoDB 手册
/ /

文本搜索运算符(自管理部署)

本页内容

  • 查询框架
  • 聚合管道

注意

本页介绍了自管理(非 Atlas)部署的文本查询功能。对于托管在 MongoDB Atlas 上的数据,MongoDB 提供了改进的全文查询解决方案,Atlas 搜索 和矢量搜索解决方案 Atlas 矢量搜索。

使用$text 查询操作符用于在具有 文本索引 的集合上执行文本搜索。

$text 使用空格和大部分标点作为分隔符来分词搜索字符串,并在搜索字符串中执行所有这些分词的逻辑 OR

例如,您可以使用以下查询在 stores 集合中找到包含列表 "coffee","shop" 和 "java" 中的任何术语的所有商店:

db.stores.find( { $text: { $search: "java coffee shop" } } )

使用 $meta 查询操作符获取并按每个匹配文档的相关性分数排序。例如,要按相关性顺序对咖啡店列表进行排序,请运行以下命令:

db.stores.find(
{ $text: { $search: "coffee shop cake" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

有关 $text$meta 操作符的更多信息,包括限制和行为,请参阅

当与 聚合 管道一起工作时,使用具有 $text 表达式的 $match 来执行文本搜索查询。为了按相关性分数排序结果,请在 $sort 阶段使用 $meta 聚合操作符 [1]。

有关 $text聚合操作 管道中的更多信息,请参阅 $text 在聚合管道上的使用。

对于托管在 MongoDB Atlas 上的数据,Atlas Search 提供了 $search 聚合阶段,以在您的集合上执行全文搜索。

[1] $meta 投影运算符的行为和需求与 $meta 聚合运算符的行为和需求不同。有关 $meta 聚合运算符的详细信息,请参阅 $meta 聚合运算符参考页面。$meta

返回

执行文本搜索