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

标签 go mgo

您好,我的 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”时也是如此 它工作正常。

问题是当我搜索“swati sharma”时它没有返回任何结果。 谁能告诉我如何实现此输出?

最佳答案

我对我的代码进行了以下更改并且它有效。


    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)

关于go - 基于 mgo 中的正则表达式的搜索未给出所需的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46172984/

相关文章:

mongodb - 使用 go 和 mgo 读取 mongodump 输出

mongodb - 如何使用go mongo驱动程序一起执行查找,区分和排序

go - mgo 不保证不同的指数

go - 如何取消引用mgo中的dbref?

node.js - Golang 从 NodeJS 解密 AES 256 CBC base64

google-app-engine - 将 Hugo 站点部署到 GAE 结果为 "internal error 13"

go - 缓冲区结束和超时

Golang,mongodb : getting database error details/codes

go - Go 中有 uint64 字面量吗?

go - 减少 slice 容量