在mongo中

时间:2015-07-25 18:02:01

标签: mongodb go mgo

我在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

但这感觉就像一个黑客。有更好的方法吗?

0 个答案:

没有答案