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 关注
- 421 浏览
添加回答
举报