Как получить вывод DecodeBytes () без канонических расширений JSON - PullRequest
0 голосов
/ 04 ноября 2019

Я использую функцию DecodeBytes() для получения данных из mongoDB (так как структура данных может варьироваться) с драйвером mongo для Go.
Моя проблема в том, что одно из значений является int / double (а неstring).
В этом случае добавление добавляет некоторые элементы канонического расширенного JSON, например 3 к "$numberDouble": "3.0".

Как удалить эти добавления канонического расширенного JSON?

func (m *Mongoclient) Find(collection string, filter interface{}) string {
    findResult := m.Db.Collection(collection).FindOne(m.Ctx, filter)
    if findResult.Err() != nil {
        fmt.Println(findResult.Err().Error())
        return ""
    }
    db, err := findResult.DecodeBytes()
    if err != nil {
        fmt.Println(err.Error())
        return ""
    }
    return db.String()
}

1 Ответ

0 голосов
/ 04 ноября 2019

Решение было использовать функцию Decode для bson.M, а затем json.Marshal it:

    var document bson.M
    err := findResult.Decode(&document)
    if err != nil {
        fmt.Println(err.Error())
        return ""
    }
    resBytes, err := json.Marshal(document)
    if err != nil {
        fmt.Println(err)
        return ""
    }
    return string(resBytes)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...