簡體   English   中英

在mgo中基於正則表達式的搜索未提供所需結果

[英]Search based on regular expression in mgo does not give required result

您好,我的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM