[英]Search based on regular expression in mgo does not give required result
Hello I have the following code in my golang: 您好,我的golang中包含以下代码:
Please take a look: 请看一下:
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)
I have a record in database with first name "swati" and last name "sharma". 我在数据库中有一条记录,名字为“ swati”,姓氏为“ sharma”。 When I search "swati" then it works properly, similarly when I search "sharma" it works properly. 当我搜索“ swati”时,它可以正常工作,类似地,当我搜索“ sharma”时,它也可以正常工作。
Issue is when I search "swati sharma" then it does not return any result. 问题是当我搜索“ swati sharma”时,它不返回任何结果。 Can anybody tell how I can achieve this output? 谁能告诉我如何实现此输出?
I made the following changes in my code and it works. 我对代码进行了以下更改,并且可以正常运行。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.