【问题标题】:cannot use primitive.D literal (type primitive.D) as type primitive.E in slice literal不能在切片字面量中使用primitive.D 字面量(类型primitive.D)作为类型primitive.E
【发布时间】:2020-04-24 15:03:14
【问题描述】:

我正在尝试将切片推送到我的 MongoDB 数据库。我试图推送的数据是具有以下字段的结构:

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

基本上,我将元素添加到我的Children 切片(如果为零则初始化它),设置我的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}}}}})

其中dbuGroupMember 实例。但是,我一直遇到错误:

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】:

    更新文档格式不正确。试试这个:

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

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 2017-05-12
      相关资源
      最近更新 更多