我是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'運算符。 –