mongodb update添加每个地图结构的值

There is a map data {"a": 2, "c": 4: "d": 0}, and a document in MongoDB:

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

The updated document:

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

Is what I wanted, now this works well:

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

How can I use a map without knowing its keys to update the document in MongoDB? Map to struct? Or use MongoDB .map function?

If you have the map value, you know its keys, you can loop over them, and build the "dynamic" update document manually.

This is how it could look like:

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}

Printing the result with

fmt.Printf("%#v
", updateDoc)

Output would be:

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