нельзя использовать литерал primitive.D (тип primitive.D) в качестве типа primitive.E в литерале слайса - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь получить sh часть моей базы данных MongoDB. Данные, которые я пытаюсь получить, представляют собой структуру со следующими полями:

type GroupMember struct {
    GroupID   string `json:"group_id" bson:"group_id"`
    Children  []string `json:"children" bson:"children"`
}

По сути, я добавляю элементы к своему срезу Children (инициализирую его, если ноль), задаю мой GroupID , а затем нужно Pu sh обновленные данные в MongoDB. Я пробовал следующее:

_, err = uc.UpdateOne(ctx, bson.M{"_id": dbu.ID}, bson.D{{"$set", bson.D{{"group_id", dbu.GroupID}}}, bson.D{{"$set", bson.D{{"children", dbu.Children}}}}})

, где dbu это GroupMember экземпляр. Тем не менее, я продолжаю сталкиваться с ошибкой:

cannot use primitive.D literal (type primitive.D) as type primitive.E in slice literal

Я пытался поиграть с различными способами сделать это на основе того, что я прочитал в Интернете, но я не уверен, что правильный подход в отношении подготовки фрагмент для загрузки как bson. Согласно документации MongoDB, bson.A является эквивалентом массива в формате bson, поэтому я попытался обернуть свои данные в bson.A{}, но я получил ту же ошибку. Буду признателен за любую помощь!

1 Ответ

1 голос
/ 24 апреля 2020

Документ обновления не правильно сформирован. Попробуйте вместо этого:

bson.M{"$set":bson.M{"group_id":dbu.GroupID,"children": dbu.Children}}
...