如何使用映射 属性 将基于结构的类型保存到 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 接口。