有地图数据{"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中的文档?映射到struct?或者使用MongoDB .map
函数?
答案 0 :(得分:0)
如果你有地图值,你知道它的键,你可以循环它们,并构建"动态"手动更新文档。
这就是它的样子:
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}}