gpt4 book ai didi

MongoDB:使用变量进行文本搜索(精确匹配)

转载 作者:行者123 更新时间:2023-12-02 08:10:28 25 4
gpt4 key购买 nike

MongoDB 3.4

我有一个变量值。 val1 = "小堡垒"

我需要在集合存储中搜索(名称字段上有文本索引),文档为

db.stores.insert([
{ _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: "Fort Coffee", description: "Discount clothing" },
{ _id: 5, name: "Java Shopping", description: "Indonesian goods" }
])


当我使用变量文本搜索集合时

db.City.find({$text:{$search: val1}})

它返回 _id : 4 文档,因为它包含 Fort。

我需要使用变量进行精确匹配。

上述搜索仅当 val1 = "Fort Coffee"时才返回

最佳答案

当您进行文本搜索时,它有许多内部步骤,例如标记您的工作、分析单词的最低词干(例如,匹配 cooking 和 cooking ,因为两者都源自基本工作“cook”)。如果您期望完全匹配,那么您实际上并不是在寻找文本搜索,而是在寻找普通查询。

因此,

如果你这样做:

db.City.find({$text:{$search: "Fort Minor"}})

它将尝试查找所有包含 fort、minor、minority、forting 等的文档。

如果您执行以下操作:

db.City.find({ name : "Fort Minor"})

如果会给您完全匹配的文档。

但是,这里有一个问题:

如果您搜索全部小写字母,例如:

db.City.find({ name : "fort minor"})

它不会给你你所期望的。

要解决此问题,请使用正则表达式:

db.user.find( { name: /^Fort Minor$/i } );

关于MongoDB:使用变量进行文本搜索(精确匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43779319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com