我的数据库连接使用后台上下文,我的光标应将哪些上下文用于聚合查询?去做()?

时间:2019-05-02 16:13:11

标签: mongodb go

我有一个标准的mongo数据库连接,该连接使用官方的Go驱动程序(mongo-go-driver)初始化了

此数据库连接的上下文和连接详细信息为:

setContext = context.Background()

mongoURI := fmt.Sprintf("mongodb://%s:%s@%s/?authSource=admin", mongoUser, mongoPwd, mongoAddress)

mongoContext, cancel := context.WithTimeout(setContext, 5*time.Second)

clientOptions := options.Client().ApplyURI(mongoURI).SetMaxPoolSize(50)

defer cancel()

mongoSession, err := mongo.Connect(mongoContext, clientOptions)

根据文档https://godoc.org/golang.org/x/net/context,我知道这是正确的:

  

Background返回一个非空的Context。它永远不会被取消,没有价值,也没有期限。它通常由主要功能,初始化和测试使用,并作为传入请求的顶级上下文。

现在,在针对该连接运行查询时,应该使用什么上下文?

以下是使用连接的示例:

mongoConnection := myMongoSessionOfficialDriver.Database(db).Collection(collection)

pipeOptions := options.Aggregate().SetMaxTime(time.Second * 10)

mongoCursor, err := mongoConnection.Aggregate(context.TODO(), aggregationPipeline, pipeOptions)

我的问题是:上下文应该是什么游标?!应该是background()我在想是否应该取消它(当我的查询返回数据时)< / p>

在文档中,对于TODO()来说:

  

TODO返回一个非空的Context。当不清楚要使用哪个上下文或尚不可用时,代码应使用context.TODO(因为尚未扩展周围的函数以接受Context参数)。静态分析工具可以识别TODO,该工具可以确定上下文是否在程序中正确传播。

好吧...那么我应该在什么上下文中使用聚合查询?

0 个答案:

没有答案