如何使用映射 属性 将基于结构的类型保存到 mongodb
How to save struct based type with a map property into mongodb
我想使用 mongodb 作为会话存储并将基于结构的数据类型保存到 mongodb。
The struct type looks like:
type Session struct {
Id string
Data map[string]interface{}
}
并创建对 Session 结构类型的引用并将一些数据放入如下属性:
type Authen struct {
Name, Email string
}
a := &Authen{Name: "Foo", Email: "foo@example.com"}
s := &Session{}
s.Id = "555555"
s.Data["logged"] = a
如何将会话数据 s
保存到 mongodb 以及如何查询这些数据并再次保存到引用中?
我认为 map[string]interface{}
.
类型的数据 属性 可能会出现问题
作为 mongodb 的驱动程序,我会使用 mgo
插入没有什么特别的。像往常一样将该会话值插入数据库,地图类型将被正确插入:
err := collection.Insert(&session)
假定描述的结构,这会将以下文档插入数据库:
{id: "555555", data: {logged: {name: "foo", email: "foo@example.com"}}}
不过,你不能像那样轻易地查询它,因为 map[string]interface{}
没有给 bson 包很好的提示关于值类型是什么(它最终会作为一个映射,而不是Authen
)。要解决此问题,您需要在 Data
字段使用的类型中实现 bson.Setter 接口。
我想使用 mongodb 作为会话存储并将基于结构的数据类型保存到 mongodb。
The struct type looks like:
type Session struct {
Id string
Data map[string]interface{}
}
并创建对 Session 结构类型的引用并将一些数据放入如下属性:
type Authen struct {
Name, Email string
}
a := &Authen{Name: "Foo", Email: "foo@example.com"}
s := &Session{}
s.Id = "555555"
s.Data["logged"] = a
如何将会话数据 s
保存到 mongodb 以及如何查询这些数据并再次保存到引用中?
我认为 map[string]interface{}
.
作为 mongodb 的驱动程序,我会使用 mgo
插入没有什么特别的。像往常一样将该会话值插入数据库,地图类型将被正确插入:
err := collection.Insert(&session)
假定描述的结构,这会将以下文档插入数据库:
{id: "555555", data: {logged: {name: "foo", email: "foo@example.com"}}}
不过,你不能像那样轻易地查询它,因为 map[string]interface{}
没有给 bson 包很好的提示关于值类型是什么(它最终会作为一个映射,而不是Authen
)。要解决此问题,您需要在 Data
字段使用的类型中实现 bson.Setter 接口。