не может преобразовать тип bson.Raw в документ BSON: длина чтения превышает количество доступных байтов - PullRequest
0 голосов
/ 18 июня 2020

Пытаюсь добавить некоторые json данные из API в базу данных, но получаю эту ошибку при попытке

cannot transform type bson.Raw to a BSON Document: length read exceeds number of bytes available. length=259839 bytes=1919951

Я знаю, что json намного ниже лимита mongodb 16mb, ive даже попытался импортировать только небольшие данные из этого api , но получил ту же ошибку. Мне удалось импортировать только тестовую структуру, чтобы убедиться, что она работает, но мои данные api, похоже, не проходят. Есть ли какой-то тип преобразования, который мне нужно сделать с моими данными api? Вот мой golang код

func main(i int) {

    url := "http://api.open-notify.org/astros.json"

    resp, err := http.Get(url)
    if err != nil {
        log.Fatalln(err)
    }

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalln(err)
    }
    // _ = body
    log.Println(string(body))


    clientOptions := options.Client().ApplyURI("mongodb+srv://username:password@cluster0-slmxe.mongodb.net/dbtest?retryWrites=true&w=majority")

    // Connect to MongoDB
    client, err := mongo.Connect(context.TODO(), clientOptions)

    if err != nil {
        log.Fatal(err)
    }

    err = client.Ping(context.TODO(), nil)

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Connected to database")

    collection := client.Database("dbtest").Collection("test")

    insertResult, err := collection.InsertOne(context.TODO(), body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Inserted", insertResult.InsertedID)

    }

1 Ответ

0 голосов
/ 18 июня 2020

Вам нужно обернуть ваш json bson.D, чтобы иметь возможность отправлять данные в Mongodb. Это необходимо для создания представления для собственных типов go. Пример ниже:

// insert the document {name: "Alice"}
res, err := coll.InsertOne(context.TODO(), bson.D{{"name", "Alice"}})
if err != nil {
    log.Fatal(err)
}

См. Следующую документацию: https://pkg.go.dev/go.mongodb.org/mongo-driver@v1.3.4 / mon go? Tab = doc # Collection.InsertOne

...