mgo中的关系

时间:2014-12-26 16:28:45

标签: mongodb go mgo

我用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是否提供了一些处理这个问题的机制?

1 个答案:

答案 0 :(得分:7)

mgo是一个db驱动程序库,而不是ORM .. 我要做的是有第二个例子中的ids数组(未导出,小写),并有一个Friends()方法,通过这些ID查询数据库并返回[]用户