Как заставить $ not regexp работать в Go? - PullRequest
0 голосов
/ 02 февраля 2019

У меня проблемы с реализацией неполного текста, исключая поиск с помощью golang и mongodb.

Это работает в оболочке Монго:

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

Я получаю ошибку:

Ошибка: refle.Value.Interface: не может вернуть значение, полученное из неэкспортированного поля или метода

Есть ли здесь какой-нибудь способ заставить регулярное выражение работать или реализовать его другим способом?

1 Ответ

0 голосов
/ 03 февраля 2019

Ответ obj{"comment": obj{"$not": bson.RegEx{Pattern: ".*" + "exclude" + ".*"}}} вместо obj{"comment": obj{"$not": re}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...