在分片文字中,不能将基元.D文字(类型为基元.D)作为基元.E类型。

问题描述 投票:0回答:1

我试图将一个切片推送到我的MongoDB数据库。我试图推送的数据是一个包含以下字段的结构。

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

基本上,我将元素添加到我的 Children slice(如果是nil,则初始化它),设置我的 GroupID然后需要将更新后的数据推送到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{} 但我得到同样的错误。我将感激任何帮助

go bson
1个回答
1
投票

更新文档的格式不完善。试试这个。

bson.M{"$set":bson.M{"group_id":dbu.GroupID,"children": dbu.Children}}
© www.soinside.com 2019 - 2024. All rights reserved.