gpt4 book ai didi

mongodb - 如何使 $not regexp 查询在 Go 中工作?

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:29 26 4
gpt4 key购买 nike

我在使用 golang 和 mongodb 实现非全文排除搜索时遇到了问题。

它在 mongo shell 中工作:

db.collectionName.find({"comment":{"$not": /.*excludeThis.*/}})

它在 Go 中不起作用:

package main

import (
"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("-------")
}

我收到错误:

Error: reflect.Value.Interface: cannot return value obtained from unexported field or method

这里有什么方法可以使正则表达式工作或以其他方式实现它吗?

最佳答案

答案是 obj{"comment": obj{"$not": bson.RegEx{Pattern: ".*"+ "exclude"+ ".*"}}} 而不是obj{"comment": obj{"$not": re}}

关于mongodb - 如何使 $not regexp 查询在 Go 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com