mongodb更新添加每个映射结构的值

标签 mongodb go mgo

有一个 map 数据{"a": 2, "c": 4: "d": 0}, 和 MongoDB 中的文档:

{
    ...
    Score: {
        "a": 1,
        "b": 2,
        "c": 0,
    }
}

更新后的文件:

{
    ...
    Score: {
        "a": 3,
        "b": 2,
        "c": 4,
        "d": 0,
    }
}

是我想要的,现在效果很好:

bson.M{"$inc": bson.M{"Score.a": 2,....}},

如何在不知道其键的情况下使用 map 来更新 MongoDB 中的文档?映射到结构?或者使用 MongoDB .map 函数?

最佳答案

如果您有映射值,您知道它的键,您可以遍历它们,并手动构建“动态”更新文档。

它可能是这样的:

m := map[string]int{
    "a": 2,
    "c": 4,
    "d": 0,
}

incDoc := bson.M{}
for k, v := range m {
    incDoc["Score."+k] = v
}
updateDoc := bson.M{"$inc": incDoc}

打印结果
fmt.Printf("%#v\n", updateDoc)

输出将是:

bson.M{"$inc":bson.M{"Score.d":0, "Score.a":2, "Score.c":4}}

关于mongodb更新添加每个映射结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48446999/

相关文章:

mongodb - 获取字符串中不同的第一个单词

javascript - 当我将它传递给客户端时,JSON 对象架构看起来不同

go - 在 Go 编程中使用 golang-Debian 包

go - 在 Go 中使用 color.RGBA 结构类型创建新颜色时,我收到错误消息,指出整数格式错误

go - Context.Value(key interface{}) interface{} 是如何工作的?

database - 用golang动态查询mongodb

go - 获取内部结构值

许多(嵌套)字段/属性上的 MongoDB 索引

java - 如何在mongo中插入带有日期的文档?

Go 中的 MongoDB 聚合查找 (mgo.v2)