为了账号安全,请及时绑定邮箱和手机立即绑定

解组嵌套的 JSON 对象

解组嵌套的 JSON 对象

Go
当年话下 2021-07-08 13:15:12
所述mgo.Change类型是特定于Query.Apply方法,该方法运行的MongoDB findAndModify命令并执行任何所支持的修改一次。所述的Upsert方法,在另一方面,需要将被直接提供给MGO / BSON用于编组的修改文件。无论您是通过Query.Apply(在mgo.Change字段中)还是通过Collection.Upsert或Collection.Update方法提供它们,这些修改文档都具有相同的格式。Update因此,导致观察到的错误是因为它试图mgo.Change用作插入的普通结构(换句话说,具有键“returnnew”等的文档),这绝对不是您想要的。例如,您提供的 shell 命令相当于使用 mgo 直接翻译:type M map[string]interface{}err := collection.Upsert(    M{        "_id": "98364_2013-12-11",        "ci":  "16326",        "dt":  "2013-12-11",        "zi":  "98364",    },    M{        "$setOnInsert": M{"ci": "16326", "dt": "2013-12-11", "zi": "98364"},        "$inc":         M{"test": 1},    },)尽管如此,这仍然是坏的,但出于不同的原因。正如错误消息中提到的服务器,这是尝试第二次设置分片键。需要注意的是一个UPSERT操作将利用查询文档中提供的字段,以及合并这两个查询文件和修改文件创建插入的最后文件。这意味着$setOnInsert文档中的分片键字段与查询文档中的分片键字段是冗余的。我将改进该领域的文档,以减少人们因使用mgo.Change. 抱歉,添麻烦了。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

有没有办法解组嵌套的 bar 属性并将其直接分配给结构属性而不创建嵌套结构?

不, encoding/json 不能像 encoding/xml 那样使用“>some>deep>childnode”来解决这个问题。嵌套结构是要走的路。


查看完整回答
反对 回复 2021-07-19
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信