我编写了一个更新函数,但是多次执行将产生错误context deadline exceeded
。
我的功能:
func Update(link string, m bson.M) {
configInfo := config.Config()
// client := GetInstance().client
// ctx := GetInstance().ctx
client, _ := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err := client.Connect(ctx)
if err != nil {
fmt.Print("connect error!")
fmt.Println(err)
}
db := client.Database("test")
lianjia := db.Collection("test")
_, err = lianjia.UpdateOne(ctx, bson.M{"Link": link}, bson.M{"$set": m})
if err != nil {
fmt.Print("update error!")
fmt.Println(err)
}
}
输出:
update error!context deadline exceeded
答案 0 :(得分:0)
更改 mongodb://localhost:27017
至 mongodb://127.0.0.1:27017/
答案 1 :(得分:0)
您使用哪个mongodb版本 Go mongo驱动程序不支持Mongo 2.4 https://jira.mongodb.org/browse/GODRIVER-1571
答案 2 :(得分:0)
在 GoLand 中调试时有时会发生这种情况,如果您有一个断点并且程序等待,然后您继续并收到此错误。如果您删除断点并再次运行该程序,它会起作用。至少我的情况是这样。
答案 3 :(得分:-1)
您的URI错误,因为您正在使用docker。
如果您的mongoDB容器名为mongoContainer
,
您应该:
client, _ := mongo.NewClient(options.Client().ApplyURI("mongodb://mongoContainer"))