我目前在Go中工作,并且有一个mongo数据库(通过gopkg.in/mgo.v2连接),所以,现在我的数据结构类似于:
{
"_id" : "some_id_bson",
"field1" : "value1",
"field2" : {
{
"key1" : "v1",
"key2" : "v2",
"key3" : "v3",
"key4" : "v4"
}
}
}
因此,基本上我需要做的(作为一个示例)是在数据库中更新所有包含key1的记录,并将其从json中删除,因此结果将类似于:
{
"_id" : "some_id_bson",
"field1" : "value1",
"field2" : {
{
"key2" : "v2",
"key3" : "v3",
"key4" : "v4"
}
}
}
我可以用什么来实现这一目标?我一直在搜索,找不到面向地图的内容(field2是地图)。在此先感谢
似乎您正在询问如何从特定文档中的嵌套对象中删除属性,在这里似乎要回答:How to remove property of nested object from MongoDB document?。从主要答案那里:
如下使用$unset:
db.collectionName.update({},{“ $ unset”:{“ values.727920”:“”}})编辑更新多个文档使用更新选项,如:
db.collectionName.update({},{“ $ unset”:{“ values.727920”:“”}},{“ multi”:true})
尝试使用$exists
和$unset
:
query:= bson.M{"$exists":bson.M{"field2.key1":true}}
replace:=bson.M{"$unset":bson.M{"field2.key1":""}}
collection.UpdateAll(query,replace)
这应该找到所有包含field2.key1
的文档,并将其删除。