小工具知识网

当前位置: 首页 > 行业知识 > MongoDB CRUD操作: 在本地实例进行文本搜索查询

行业知识

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

2026-11-11 07:22:26 来源:互联网转载

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

文章目录

  • MongoDB CRUD操作: 在本地实例进行文本搜索查询
    • 举例
      • 创建集合
      • 创建文本索引
      • 精准搜索
      • 排除短语
      • 结果排序

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

        举例

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

        创建集合

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

        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中运行下面的命令,对名称和描述字段创建索引:

        db.stores.createIndex( { name: "text", description: "text" } )

        精准搜索

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

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

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

        排除短语

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

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

        结果排序

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

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

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

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

上一篇:战地2042怎么调服务器?

下一篇:戴尔服务器怎么刷机?