douting0585 2019-08-22 15:08
浏览 648

在mongo-go-driver中将json参数转换为bson for UpdateOne

I am trying to use UpdateOne of mongo-go-driver library but this method take bson document. I give it a interface parameter (json).

My question is to find best way to parse my json request to bson for updating fields dynamically. Thank you.

func (s Store) Update(id`enter code here` bson.D, d interface{}) (*mongo.UpdateResult, int32, string) {
    upd := bson.D{
        {
            "$inc", bson.D{
                d,
            },
        },
    }
    c, ctx, _ := getCollection(s.conn, s.dbName, s.collectionName)
    res, err := c.UpdateOne(ctx, id, d)
    if err != nil {
        log.Fatal(err)
        return res, 500, "DATABASE ERROR: Cannot update document"
    }
    return res, 200, "none"
}

I am getting this error:

Error: cannot use d (type inte`enter code here`rface {}) as type primitive.E in array or slice literal: need type assertion
  • 写回答

1条回答 默认 最新

  • dongqi1245 2019-08-22 16:59
    关注

    You need to pass a bson.D as third parameter of UpdateOne, at least according to this tutorial.

    So in your code you shouldn't pass d, but upd to the UpdateOne function:

    func (s Store) Update(id`enter code here` bson.D, d interface{}) (*mongo.UpdateResult, int32, string) {
        upd := bson.D{
            {
                "$inc", bson.D{
                    d,
                },
            },
        }
        c, ctx, _ := getCollection(s.conn, s.dbName, s.collectionName)
        res, err := c.UpdateOne(ctx, id, upd)
        if err != nil {
            log.Fatal(err)
            return res, 500, "DATABASE ERROR: Cannot update document"
        }
        return res, 200, "none"
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗