猿问

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

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}}

同一个键的所有操作都需要追加。先谢谢了


ABOUTYOU
浏览 367回答 1
1回答

有只小跳蛙

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}这是你可以尝试的
随时随地看视频慕课网APP

相关分类

Go
我要回答