Docs 主页 → 开发应用程序 → MongoDB Manual
文本搜索操作符(自管理部署)
注意
本页介绍自管理(非 Atlas)部署的文本搜索功能。对于 MongoDB Atlas 上托管的数据,MongoDB 提供了改进的全文搜索解决方案,即 Atlas Search。
查询框架
使用 $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" } } )
聚合管道 (Aggregation Pipeline)
使用聚合管道时,请将 $match
与 $text
表达式一起用于执行文本搜索查询。要按相关性分数对结果进行排序,请在 $sort
阶段 [1] 中使用 $meta
聚合操作符。
有关聚合操作管道中文本搜索的更多信息和示例,请参阅聚合管道中的文本搜索。
对于 MongoDB Atlas 上托管的数据, Atlas Search提供$search聚合阶段来对集合执行全文搜索。
[1] | $meta 投影操作符的行为和要求与 $meta 聚合操作符的行为和要求不同。有关 $meta 聚合操作符的详细信息,请参阅 $meta 聚合操作符参考页面。。 |