我在使用 golang 和 mongodb 实现非全文排除搜索时遇到问题。它在 mongo shell 中工作:db.collectionName.find({"comment":{"$not": /.*excludeThis.*/}})它在 Go 中不起作用:package mainimport ( "log" "regexp" "github.com/night-codes/mgo-wrapper" mgo "gopkg.in/mgo.v2")type ( SomeStruct struct { ID uint64 `form:"id" json:"id" bson:"_id"` Name string `form:"name" json:"name" bson:"name"` Comment string `form:"comment" json:"comment" bson:"comment"` } collectionStruct struct { collection *mgo.Collection } obj map[string]interface{} arr []interface{})var ( some = collectionStruct{collection: mongo.DB("somedb").C("somecollection")})func main() { re := regexp.MustCompile(".*" + "exclude" + ".*") query := obj{"comment": obj{"$not": re}} result := []SomeStruct{} if err := some.collection.Find(query).All(&result); err != nil { log.Println("Error:", err) return } log.Println("Result:") for k := range result { log.Printf("%+v\n", result[k]) } log.Println("-------")}我收到错误:错误:reflect.Value.Interface:无法返回从未导出的字段或方法获得的值这里有什么方法可以使正则表达式工作或以其他方式实现它吗?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
答案是obj{"comment": obj{"$not": bson.RegEx{Pattern: ".*" + "exclude" + ".*"}}}
代替obj{"comment": obj{"$not": re}}
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消