为了账号安全,请及时绑定邮箱和手机立即绑定

我如何在 golang 的 mongo 中将 bson.M 元素列表组合成单个 bson.M?

我如何在 golang 的 mongo 中将 bson.M 元素列表组合成单个 bson.M?

Go
ABOUTYOU 2021-12-13 18:27:53
lstMap := make([]interface{}, 0)lstMap = mongoOps.AddToBsonMap(lstMap, bson.M{"$inc": bson.M{"Google.ab.Value": 1}})lstMap = mongoOps.AddToBsonMap(lstMap, bson.M{"$inc": bson.M{"Google.ab1.Value1": 1}})func (o *MongoOps) AddToBsonMap(lstMap []interface{}, value interface{}) (result []interface{}) {lstMap = append(lstMap, value)return lstMap} I want the in this format : bson.M{"$inc": bson.M{"Google.ab.Value": 1, "AB.Value.to": 2}}同一个键的所有操作都需要追加。先谢谢了
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

func (o *MongoOps) AddToBsonMapElement(lstMap map[string]interface{},     Operation string, key string, value interface{}) (result map[string]interface{})     {

status, msg := EmptyStructCheck(o)

if status == true {

    LogError(msg)

    panic(msg)

}

if Operation == "$addToSetEach" {

    if _, ok := lstMap["$addToSet"]; ok {

        childmap := lstMap["$addToSet"]

        subchildmap := childmap.(map[string]interface{})

        var val map[string]interface{}

        val = make(map[string]interface{})

        val["$each"] = value

        subchildmap[key] = val

        lstMap["$addToSet"] = subchildmap


    } else {

        lstMap["$addToSet"] = bson.M{key: bson.M{"$each": value}}

    }


    fmt.Println(reflect.TypeOf(lstMap))

} else if _, ok := lstMap[Operation]; ok {

    childmap := lstMap[Operation]

    subchildmap := childmap.(map[string]interface{})

    subchildmap[key] = value

    lstMap[Operation] = subchildmap


} else {

    childmap := make(map[string]interface{}, 0)

    childmap[key] = value

    lstMap[Operation] = childmap

}


return lstMap

}

这是你可以尝试的


查看完整回答
反对 回复 2021-12-13
  • 1 回答
  • 0 关注
  • 366 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信