mongodb 更新添加每个地图结构的值

mongodb update add each map structure's value

有地图数据{"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,....}},

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

如果你有映射值,你知道它的键,你可以遍历它们,并手动构建"dynamic"更新文档。

它可能是这样的:

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