根据地图值更新 mongo 个文档并删除该值
updating mongo documents based in map value and remove that value
我目前正在使用 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 是地图)。提前致谢
您似乎在询问如何从特定文档中的嵌套对象中删除 属性,似乎可以在此处回答:。
从那里的主要答案:
Use $unset as below :
db.collectionName.update({},{"$unset":{"values.727920":""}}) EDIT For
updating multiple documents use update options like :
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
的文档并将其删除。
我目前正在使用 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 是地图)。提前致谢
您似乎在询问如何从特定文档中的嵌套对象中删除 属性,似乎可以在此处回答:
Use $unset as below :
db.collectionName.update({},{"$unset":{"values.727920":""}}) EDIT For updating multiple documents use update options like :
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
的文档并将其删除。