登录
首页 >  Golang >  Go问答

使用地图值更新Mongo文档并删除该值

来源:stackoverflow

时间:2024-02-24 19:09:25 163浏览 收藏

大家好,今天本人给大家带来文章《使用地图值更新Mongo文档并删除该值》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我目前在 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 的所有文档,并将其删除。

以上就是《使用地图值更新Mongo文档并删除该值》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>