我想使用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
答案 0 :(得分:3)
插入没有什么特别之处。只需像往常一样将该会话值插入数据库,并正确插入地图类型:
err := collection.Insert(&session)
假设描述的结构,这将把以下文档插入数据库:
{id: "555555", data: {logged: {name: "foo", email: "foo@example.com"}}}
你不能轻易地像这样查询它,因为map[string]interface{}
没有给bson包提供关于值类型是什么的好提示(它最终将作为地图,而不是Authen
)。要解决此问题,您需要在Data
字段使用的类型中实现bson.Setter界面。