我用golang和mgo写了一些简单的程序。我的问题是如何妥善处理mgo中的关系。
第一种方法:
type User struct {
Id bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"`
Username string `json:"username" bson:"username"`
Email string `json:"email" bson:"email"`
Password string `json:"password" bson:"password"`
Friends []User `json:"friends" bson:"friends"`
}
"的友"是用户的一部分。我可以$推送一个指向用户的指针,它只是工作正常。问题是我只想存储对用户的引用而不是嵌套它:
第二种方法:
type User struct {
Id bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"`
Username string `json:"username" bson:"username"`
Email string `json:"email" bson:"email"`
Password string `json:"password" bson:"password"`
Friends []bson.ObjectId `json:"friends" bson:"friends"`
}
这给了我想要的输出 - 但是现在从结构中看不到哪些嵌套结构被引用了。 mgo是否提供了一些处理这个问题的机制?
答案 0 :(得分:7)
mgo是一个db驱动程序库,而不是ORM .. 我要做的是有第二个例子中的ids数组(未导出,小写),并有一个Friends()方法,通过这些ID查询数据库并返回[]用户