避免在 go-mongo 中将嵌套结构作为嵌套值
Avoid nested struct as nested value in go-mongo
我有所有其他结构的通用结构。
// Base 包含所有文档的公共字段,如下所示。
type Base struct {
CreatedAt time.Time `json:"createdAt" bson:"created_at"`
UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"`
DeletedAt time.Time `json:"deletedAt,omitempty" bson:"deleted_at"`
}
type Nice struct {
Base
Notes string `json:"notes" bson:"notes"`
}
现在的问题是 go-Mongo 将其保存为名称为 base 的嵌套对象,如下所示,我想避免将其保存为嵌套对象。有什么方法可以避免,我在文档中找不到任何东西
{ "_id" : ObjectId("6154807677b7f58b6438b71c"), "base" : { "created_at" : ISODate("2021-09-29T15:04:22.322Z"), "updated_at" : ISODate("0001-01-01T00:00:00Z"), "deleted_at" : ISODate("0001-01-01T00:00:00Z") } "notes" : ""}
它在 bson 文档中:
inline: If the inline struct tag is specified for a struct or map field, the field will be "flattened" when marshalling and "un-flattened" when unmarshalling.
所以使用:
type Nice struct {
Base `bson:",inline"`
Notes string `json:"notes" bson:"notes"`
}
我有所有其他结构的通用结构。
// Base 包含所有文档的公共字段,如下所示。
type Base struct {
CreatedAt time.Time `json:"createdAt" bson:"created_at"`
UpdatedAt time.Time `json:"updatedAt" bson:"updated_at"`
DeletedAt time.Time `json:"deletedAt,omitempty" bson:"deleted_at"`
}
type Nice struct {
Base
Notes string `json:"notes" bson:"notes"`
}
现在的问题是 go-Mongo 将其保存为名称为 base 的嵌套对象,如下所示,我想避免将其保存为嵌套对象。有什么方法可以避免,我在文档中找不到任何东西
{ "_id" : ObjectId("6154807677b7f58b6438b71c"), "base" : { "created_at" : ISODate("2021-09-29T15:04:22.322Z"), "updated_at" : ISODate("0001-01-01T00:00:00Z"), "deleted_at" : ISODate("0001-01-01T00:00:00Z") } "notes" : ""}
它在 bson 文档中:
inline: If the inline struct tag is specified for a struct or map field, the field will be "flattened" when marshalling and "un-flattened" when unmarshalling.
所以使用:
type Nice struct {
Base `bson:",inline"`
Notes string `json:"notes" bson:"notes"`
}