当前位置: 首页 > 知识库问答 >
问题:

mgo中基于正则表达式的搜索未给出所需结果

宣冥夜
2023-03-14

你好,我的golang中有以下代码:

请看一下:

type User struct {
    Id              int      `json:"id" bson:"_id"`
    FirstName       string   `json:"first_name" bson:"first_name"`
    LastName        string   `json:"last_name" bson:"last_name"`
    EmailId         string   `json:"email_id" bson:"email_id"`
    Password        string   `json:"password" bson:"password"`
    PhoneNumber     string   `json:"phone_number" bson:"phone_number"`
    AltPhoneNumber  string   `json:"alt_phone_number" bson:"alt_phone_number"`
    Gender          string   `json:"gender" bson:"gender"`
    Note            string   `json:"note" bson:"note"`
    Address         string   `json:"address" bson:"address"`
    AptNo           string   `json:"apt_no" bson:"apt_no"`
    City            string   `json:"city" bson:"city"`
    Zipcode         string   `json:"zipcode" bson:"zipcode"`
}

query   := bson.M{  "role"   : "customer", 
                    "status" : 1, 
                    "$or": []bson.M{ 
                        bson.M{"first_name":bson.RegEx{".*"+keyword+"*.", "i"} },
                        bson.M{"last_name": bson.RegEx{".*"+keyword+"*.", "i"} }, 
                        bson.M{"email_id": bson.RegEx{".*"+keyword, "i"} }, 
                        bson.M{"phone_number": bson.RegEx{".*"+keyword, "i"} }, 
                        bson.M{"alt_phone_number": bson.RegEx{".*"+keyword, "i"} }, 
                }}

err = c.Find(query).All(&result)

我在数据库中有一个名为“斯瓦蒂”和姓“沙玛”的记录。当我搜索“swati”时,它会正常工作,同样,当我搜索到“sharma”时也会正常工作。

问题是当我搜索“swati sharma”时,它没有返回任何结果。谁能告诉我怎样才能达到这个产量?

共有1个答案

郎思远
2023-03-14

我在代码中进行了以下更改,并且它有效。


    name := strings.Replace(keyword, " ", "|", -1)
        conditions := bson.M{ "role" : config.ProviderRole, 
                                "status" : status, 
                                "$or": []bson.M{ 
                                    bson.M{"first_name":bson.RegEx{"(?i).*"+name+".*", "i"} },
                                    bson.M{"last_name": bson.RegEx{ "(?i).*"+name+".*", "i"} }, 
                                    bson.M{"email_id": bson.RegEx{".*"+keyword, "i"} }, 
                                    bson.M{"phone_number": bson.RegEx{".*"+keyword, "i"} }, 
                                    bson.M{"alt_phone_number": bson.RegEx{".*"+keyword, "i"} }, 
                                }}
    err = c.Find(query).All(&result)

 类似资料:
  • 问题内容: 我正在使用HashMap构建同义词库来存储同义词。 我正在尝试根据正则表达式搜索单词:该方法将必须将字符串作为参数并返回结果数组。这是我的第一个方法: 现在,这不符合我的预期(或者我使用的正则表达式不正确)。如果我在哈希图中具有以下键: 然后打电话或我得到。 我如何使这项工作按预期进行? 是否有比HashMap更好的数据结构来保留同义词库所需的类似数据?(仅出于好奇,对于此任务,我们被

  • 本文向大家介绍基于Python正则表达式提取搜索结果中的站点地址,包括了基于Python正则表达式提取搜索结果中的站点地址的使用技巧和注意事项,需要的朋友参考一下 正则表达式对于Python来说并不是独有的,最近在把google搜索的结果中所有的站点地址导出,于是想到用python正则表达式提取搜索结果中的站点地址。 这其中涉及几个需要解决的问题: 1、获取搜索的结果文本 为了获得更多的地址,我使

  • 问题内容: 我需要找到与特定正则表达式匹配的所有软件包: 基本上,包的名字应该与启动,并有后话。例如,以下软件包应匹配: 我可以做,但是有很多我不感兴趣的软件包。 是否提供通过正则表达式查找软件包的方法?或者,我应该只是通过管道传递结果来过滤掉无关的包? 此外,可能是一个的“交集” ,并有助于太。 问题答案: alecxe,我相信这是您要寻找的一线客。 如下面评论中铬酸盐所建议的那样,您可以根据需

  • 问题内容: 我运行一个发现有任何字* .sql文件后跟字后面的字。该select语句可以跨越很多行,并且可以包含制表符和换行符。 我已经尝试了以下几种变体: 但是,这将永远持续下去。谁能用正确的语法帮助我? 问题答案: 无需安装grep变体pcregrep,您可以使用grep进行多行搜索。 说明: 激活grep的perl- regexp (正则表达式的强大扩展) 禁止在行尾换行,用空字符代替。也就

  • 问题内容: 我需要在给定正则表达式的字符串中找到所有匹配项。我一直在这样做,直到遇到一个案例,它没有达到我的预期。例如: 在这种情况下,返回我需要的内容(最长的匹配项),但是行为却有所不同,尽管文档暗示它应该是相同的: 匹配所有出现的模式,而不仅仅是第一个。 为什么行为不同? 如何获得with (或其他方式)的结果? 问题答案: 好的,我从文档中查看发生了什么…… 如果该模式中存在一个或多个组,则