我在monogoDB中有一个具有以下文档结构的集合:
{_id:"foo",
content: [
{_id: "bar1",
field1: "value1",
field2: "value2",
field3: "value3",
field4: "value4"},
{_id: "bar2",
field1: "value5",
field2: "value6",
field3: "value7",
field4: "value8"}]
}
我想在单个嵌入式内容文档中执行部分更新,而不必指定我要更新的字段。根据我的阅读,我唯一的选择是:
Update({"_id": "foo", "content._id" : "bar1"},
{"$set": {"content.$.field1" : "value9", "content.$.field2" : "value10"})
假设这是我最好的选择,从POST正文应用更新的最佳方法是什么? (我这样做)。我不认为让客户端使用" content。$。"前缀所有字段名称是有道理的,所以我现在正在创建一个带有前缀字段的新地图POST正文:
content := bson.M{}
json.NewDecoder(r.Body).Decode(&content)
newContent := bson.M{}
for key, val := range content{
newContent["content.$." + key] = val
}
//proceed with newContent
但这感觉就像一个黑客。有更好的方法吗?