【发布时间】:2018-04-16 06:23:52
【问题描述】:
我有这样的结构:
type data_to_store struct {
Data some_custom_structure `json:"Data" bson:"Data"`
MoreData another_custom_structure `json:"more_data" bson:"More_Data"`
}
创建一个使用这个结构的对象:
Data := data_to_store {
Data: some_custom_struct_object,
MoreData: another_custom_struct_object,
}
我正在尝试像这样将它插入到数据库中:
session, _ := mgo.Dial("localhost")
defer session.Close()
session.SetMode(mgo.Monotonic, true)
collection := session.DB("test_database").C("test_collection")
collection.Insert(&Data)
它确实存储,但结果是这样插入的:
{ "lol": "rofl",
"lmao": "kek",
}
} { "blah": "blahblah",
"ololo": 2,
}
有没有办法让它像下面这样存储?
"data": { "lol": "rofl",
"lmao": "kek",
}
}, "more_data" { "blah": "blahblah",
"ololo": 2,
}
编组数据对这项工作没有帮助,或者我做错了:
data, _ := bson.Marshal(&replay)
collection.Insert(&data)
【问题讨论】:
-
您的代码无效,能否提供MCVE,以便我们解决实际问题?
-
是的,你是对的。代码确实有一些问题。这是更正的版本:play.golang.org/p/nrGwyMCMJm 但实际上我需要注意的是,我通过将自定义结构替换为字符串来简化了它。
-
当我从 sn-p 运行代码时,它会插入一个带有“data”和“more_data”字段的文档:
{ "_id" : ..., "Data" : "some_custom_struct_object", "More_Data" : "another_custom_struct_object" } -
是的,这就是为什么我只用字符串来简化它。原因是这些结构来自其他地方。或者更具体地说,它是这个库的对象:github.com/icza/s2prot
-
很公平,但您需要在问题本身中描述问题。您提供的代码符合您的期望,因此无需修复。
标签: mongodb go marshalling bson mgo