小编ben*_*nyu的帖子

如何在mgo中取消引用dbref?

var (
    type User struct{
        Id bson.ObjectId `bson:"_id"`
        Name string
    }

type Post struct{
    Id bson.ObjectId `bson:"_id"`
    Uid string
    User User
    ref mgo.DBRef
    Title string
    }
)
Run Code Online (Sandbox Code Playgroud)

//尝试10000次插入

id := bson.NewObjectId()
user := &User{ id, "test"}
db.C("users").insert(user)

post := db.C("Post").insert(&Post{Uid: id.hex(), ref: mgo.DBRef{"ref":"users", "id": id}, Title:"test dbref"})
Run Code Online (Sandbox Code Playgroud)

//第一道这么脏-_-!

// mysql:在user.id = post.uid上加入用户,在mgo中怎么做?

posts := new([]User)
db.C("posts").Find(nil).All(posts)

ids := []bson.ObjectId
for _, p := range posts{
  ids = append(ids, p.Uid)
}

users := make([]User, len(ids))
db.C("users").Find(bson.M{"_id": {"$in": ids}}).All(users)

//and then set …
Run Code Online (Sandbox Code Playgroud)

go mgo

9
推荐指数
1
解决办法
1457
查看次数

标签 统计

go ×1

mgo ×1