基于地图值更新mongo文档并删除该值

问题描述 投票:0回答:2

我目前在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是地图)。在此先感谢

mongodb go mgo
2个回答
0
投票

似乎您正在询问如何从特定文档中的嵌套对象中删除属性,在这里似乎要回答: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})


0
投票

尝试使用$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的文档,并将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.