我一直在使用以下代码列出以搜索关键字开头的用户,该关键字作为name
传递给该函数。
func (this *user) GetUsersByEmailOrName(name *string) ([]types.User, error) {
formattedName := "/^" + *name + "/"
var ors []bson.M
userNameOr := bson.M{
"user_name": bson.M{
"$regex": bson.RegEx{formattedName, "i"},
},
}
ors = append(ors, userNameOr)
nameOr := bson.M{
"name": bson.M{
"$regex": bson.RegEx{formattedName, "i"},
},
}
ors = append(ors, nameOr)
query := bson.M{
"$or": ors,
}
fmt.Println(query)
s := this.Database.Session.Copy()
defer s.Close()
var users []types.User
err := s.DB("").C(this.Collection).Find(query).Sort("name").All(&users)
if err != nil {
return nil, err
}
fmt.Println(users)
return users, nil
}
我是GoLang和MGo的新手。我不确定出了什么问题。请指出正确的方向。