如何摆脱在mongodb中插入嵌套结构时添加的附加键

How to get rid of an additional key added while inserting a nested struct in mongodb

提问人:Chinmaya Pati 提问时间:11/23/2020 最后编辑:Jonathan HallChinmaya Pati 更新时间:11/24/2020 访问量:106

问:

假设这是我的结构定义,

type partialContent struct {
  key   string   `json:"key" bson"key"`
  value string   `json:"value" bson:"value"`
}

type content struct {
  id string `json:"id" bson:"_id,omitempty"`
  partialContent
}

在MongoDB中存储内容时,它被存储为

{
  "_id": ObjectID,
  "partialcontent": {
    "key": "...",
    "value": "..."
  }
}

但是 JSON 取消封送返回

{
  "_id": ObjectID,
  "key": "...",
  "value": "..."
}

如何删除MongoDB中额外的关键部分内容

MongoDB Go struct 嵌套 标签

评论


答:

2赞 icza 11/23/2020 #1

首先,您需要导出结构字段,否则驱动程序将跳过这些字段。

如果不希望在 MongoDB 中使用嵌入式文档,请使用 bson 标记选项:,inline

type PartialContent struct {
    Key   string `json:"key" bson"key"`
    Value string `json:"value" bson:"value"`
}

type Content struct {
    ID             string `json:"id" bson:"_id,omitempty"`
    PartialContent `bson:",inline"`
}

插入此值:

v := Content{
    ID: "abc",
    PartialContent: PartialContent{
        Key:   "k1",
        Value: "v1",
    },
}

将在MongoDB中生成此文档:

{ "_id" : "abc", "key" : "k1", "value" : "v1" }

评论

0赞 Chinmaya Pati 11/24/2020
谢谢,这解决了它!对不起,我忘了在问题中添加它。