Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

文本搜索操作符(自管理部署)

在此页面上

  • 查询框架
  • 聚合管道 (Aggregation Pipeline)

注意

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

使用 $text查询运算符可对带有文本索引的集合执行文本搜索。

$text 使用空格和大多数标点符号作为分隔符来标记搜索string ,并对搜索string中的所有此类标记执行逻辑 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 操作符的更多信息,包括限制和行为,请参阅:

使用聚合管道时,使用$match$text表达式来执行文本搜索查询。 要按相关性分数顺序对结果进行排序,请在 阶段使用$meta $sort聚合操作符[1 ]

有关聚合操作管道中$text的更多信息和示例,请参阅自托管部署上的聚合管道中的 $text。

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

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

后退

执行文本搜索