我是mongodb和golang的新手。在我的一个项目中,我想连接mongo和go。我正在使用mgo.v2驱动程序将mongo与go连接。我的问题是: 如何自动递增我的文档的_id字段,以便每当我尝试执行POST操作时,它应自动递增文档的_id字段? 我想实现类似于“FindAndModify”功能的东西,但我没有看到这个功能。 这就是我想去尝试。 Auto increment id in mongodb如何使用golang mgo驱动程序自动增加mongodb的id字段?
type count struct {
ID string `bson:"_id"`
Seq int `bson:"seq"`
}
var doc count
func get NextSequence(name string) int{
change := mgo.Change{
Update: collection.Update(count{ID: "userid"}, bson.M{"$inc": count{Seq: 1}}),
ReturnNew: true,
}
_, err1 := collection.Find(bson.M{}).Apply(change, &doc)
return doc.Seq
}
func main(){
fmt.Println(getNextSequence("userid"))
fmt.Println(getNextSequence("userid"))
doc2 := msg{ID: getNextSequence("userid"), Name: "Sarah"}
doc3 := msg{ID: getNextSequence("userid"), Name: "Sarah2"}
}
我尝试了上面的代码,但序列的价值似乎并不increment.It给我0每次我做的函数的调用。 感谢您的帮助。
自动增加MongoDB中往往是一个不好的做法,因为它没有很好地扩展。它有点挫败了使用它的目的。有一个原因,为什么默认不是自动递增的主键值。有没有什么你想到的只能通过自动递增ID来实现? –
我完全同意@WillC。此外:'_id'是不可变的。当你“改变”它时,你可以有效地创建一个新文档。如果你确实需要一个计数器(例如用于乐观锁定),则应该在* not *'_id'字段使用'$ inc'运算符。 –