3 回答

TA貢獻1804條經驗 獲得超3個贊
根據mgo包文檔,您可以使用Query.Apply。我自己沒有嘗試過,但是那里給出的示例似乎已經完成了您想要實現的目標:
change := mgo.Change{
Update: bson.M{"$inc": bson.M{"n": 1}},
ReturnNew: true,
}
info, err = col.Find(M{"_id": id}).Apply(change, &doc)
fmt.Println(doc.N)

TA貢獻1847條經驗 獲得超7個贊
可能會遲到,但您也可以使用night-codes/mgo-ai包來管理您的序列。
我個人使用了這個,我創建了一個單獨的sequences集合來存儲遞增的值。我還保留了該_id字段,并id為我的sequence價值設置了一個單獨的字段。
從它的README.md:
package main
import (
"github.com/night-codes/mgo-ai"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
// connect AutoIncrement to collection "counters"
ai.Connect(session.DB("example-db").C("counters"))
// ...
// use AutoIncrement
session.DB("example-db").C("users").Insert(bson.M{
"_id": ai.Next("users"),
"login": "test",
"age": 32,
}

TA貢獻1863條經驗 獲得超2個贊
試試下面的
再聲明一個變量名 var total_doc int'
然后這樣做collection.Find(bson.M{}).Count(total_doc)
將返回您在 mongodb 數據庫中擁有的文檔總數。
添加之后doc.Seq = total_doc + 1
。每當添加新文檔時,這將繼續增加序列值。
希望這可以幫助你
- 3 回答
- 0 關注
- 484 瀏覽
添加回答
舉報