Mongodb 简单查询上的上下文

Mongodb 简单查询上的上下文,mongodb,go,Mongodb,Go,我正在MongoDB上进行一个简单的数据库查询,我看到了两种调用上下文的不同方法 超时的第一种方式: ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() result := collection.FindOne(ctx, bson.M{"_id": userID}) 第二种方法,直接使用context.Background()调用 如果我使用第二种方式,

我正在MongoDB上进行一个简单的数据库查询,我看到了两种调用上下文的不同方法

超时的第一种方式:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
result := collection.FindOne(ctx, bson.M{"_id": userID})
第二种方法,直接使用context.Background()调用

如果我使用第二种方式,并且有很长的延迟,它会永远等待还是在某一点超时?

我发现第二个解决方案更优雅,代码行更少,但由于我是新手,我可能会误解风险。

如果通过设置套接字超时和连接超时,则第二个选项在超过这些超时时应该超时。

因此在我的rest API上,我设置了一个
&http.Server{WriteTimeout:10*time.second}
这意味着10秒后它将超时?不,服务器的超时与MongoDB客户端使用的超时无关。好的,在我的情况下,MongoDB从不超时,所以我最好始终使用上下文和超时。谢谢
result := collection.FindOne(context.Background(), bson.M{"_id": userID})