我有一个逻辑结构
type MyStruct struct {
F1 string
F2 string
}
我想将类型MyStruct
的值保存到文档数据库,仅添加一个时间戳。因此,我创建了一个嵌入MyStruct
type MyStructForDB {
MyStruct
Ts time.Time
}
在saveToDb函数中,执行以下操作
func saveToDb(s MyStruct) {
sDb := MyStructForDB{
s, time.Now()
}
// execute the update on the DB
}
如果我这样进行,则在数据库上找到具有以下结构的文档
{
myStruct: {
f1: "a value" // any value that was in s.F1
f2: "another value" // any value that was in s.F2
}
ts: 2020-06-26T14:15:07.050Z // a timestamp value
}
虽然可以,但我不希望看到myStruct
属性,而不会看到像这样的扁平文档
{
f1: "a value" // any value that was in s.F1
f2: "another value" // any value that was in s.F2
ts: 2020-06-26T14:15:07.050Z // a timestamp value
}
我知道我可以逐个复制字段或使用反射来完成此操作,但我只是想知道是否有更简单的方法来实现此目的
答案 0 :(得分:1)
在DocumentDB中,您可以使用inline
包的bson
标志来展平嵌入式结构
type MyStructForDB {
MyStruct `bson:",inline"`
Ts time.Time
}