根据地图值更新 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 的文档并将其删除。