MongoDB CRUD操作: 在本地实例进行文本搜索查询

MongoDB CRUD操作: 在本地实例进行文本搜索查询

文章目录

在本地实例运行文本搜索查询前,必须先在集合上建立文本索引。MongoDB提供文本索引,支持对字符串内容的文本搜索查询。文本索引可以包含任何值为字符串或字符串元素数组的字段。一个集合只能有一个文本搜索索引,但索引可以有多个字段。

举例

下面的示例演示了如何建立文本索引,并利用它根据文本字段查找咖啡店。

创建集合

使用下面的脚本创建stores集合:

js 复制代码
db.stores.insertMany(
   [
     { _id: 1, name: "Java Hut", description: "Coffee and cakes" },
     { _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" },
     { _id: 3, name: "Coffee Shop", description: "Just coffee" },
     { _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" },
     { _id: 5, name: "Java Shopping", description: "Indonesian goods" }
   ]
)

创建文本索引

在mongosh中运行下面的命令,对名称和描述字段创建索引:

js 复制代码
db.stores.createIndex( { name: "text", description: "text" } )

精准搜索

可以通过用双引号将要搜搜的文本引起来进行精确搜索,如果$search字符串包含短语和单个术语,则文本搜索将仅匹配包含该短语的文档。

例如,以下命令将查找包含"coffee shop"的所有文档:

js 复制代码
db.stores.find( { $text: { $search: "\"coffee shop\"" } } )

排除短语

可以在前面加上一个"-"字符来排除一个单词。例如,要查找所有包含"java""shop"但不包含"coffee "的商店,使用下面的命令:

js 复制代码
db.stores.find( { $text: { $search: "java shop -coffee" } } )

结果排序

默认情况下,MongoDB以未排序的方式返回结果,不过,文本搜索查询会为每个文档计算一个相关性得分,以确定文档与查询的匹配程度。

要按相关性得分排序结果,必须显式地投影$meta textScore字段,并根据它排序:

js 复制代码
db.stores.find(
   { $text: { $search: "java coffee shop" } },
   { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

聚合管道中也支持文本搜索。

相关推荐
吴声子夜歌16 分钟前
Redis 3.x——集群故障转移
java·数据库·redis·集群
名不经传的养虾人19 分钟前
从0到1:企业级AI项目迭代日记 Vol.71|系统显示正常,但实际上什么都没发生
数据库·人工智能·ai编程·ai工作流·企业ai
尽兴-22 分钟前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表
AC赳赳老秦1 小时前
OpenClaw 采集任务日志审计:全程记录采集行为,满足合规溯源与企业审计要求
java·大数据·python·数据挖掘·数据分析·php·openclaw
空中湖1 小时前
Spring AI Function Calling 完全指南:让 AI 查数据库、调 API、发通知
数据库·人工智能·spring
huangdong_1 小时前
电商图片下载工具横向对比深度评测:固乔、FATKUN、图快、当图、淘蛙、存图宝七款工具全面解析
python
满怀冰雪2 小时前
04-Paddle Tensor 基础:形状、数据类型、广播与索引
python·深度学习·神经网络·paddle
cui_ruicheng2 小时前
Python从入门到实战(十五):文件操作与目录管理
开发语言·python
xcLeigh2 小时前
Doubao-Seed-Evolving大模型接入教程|搭建全品类提示词+AI工具导航网页
前端·人工智能·python·ai·html·ai开发·豆包
不如语冰2 小时前
AI大模型入门-模块导入import
数据结构·人工智能·pytorch·python