我使用 labix mgo 模块作为 Go Mongo 驱动程序。由于 Go 是并发的(和并行的),在应用程序中生成 ObjectId 是否安全还是应该只有数据库才能这样做?
如果.Insert()可以返回就真的很简单了Id。但是这样当我需要它时,有两种方法可以做到这一点:
1) 在客户端生成 ObjectId 并使用它
...
user.ID = bson.NewObjectId()
Users.Insert(user)
// use user.ID normally
2)让数据库生成Id并检索它
...
Users.Insert(user)
Users.Find(user).One(&user)
// user user.ID normally
第二种方法需要 2 个数据库请求和同步插入。
问题是:第一种方法和第二种方法一样安全吗?或者我应该使用什么更好的方法?
相关分类