Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 我的数据库连接使用后台上下文,我的游标应该使用什么上下文进行聚合查询?TODO()?_Mongodb_Go - Fatal编程技术网

Mongodb 我的数据库连接使用后台上下文,我的游标应该使用什么上下文进行聚合查询?TODO()?

Mongodb 我的数据库连接使用后台上下文,我的游标应该使用什么上下文进行聚合查询?TODO()?,mongodb,go,Mongodb,Go,我有一个使用官方Go驱动程序(mongo Go驱动程序)初始化的标准mongo db连接 此db连接的上下文和连接详细信息如下: setContext = context.Background() mongoURI := fmt.Sprintf("mongodb://%s:%s@%s/?authSource=admin", mongoUser, mongoPwd, mongoAddress) mongoContext, cancel := context.WithTimeout(setCon

我有一个使用官方Go驱动程序(mongo Go驱动程序)初始化的标准mongo db连接

此db连接的上下文和连接详细信息如下:

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)
从文件中,我了解到这是正确的:

后台返回一个非零的空上下文。它从未被取消,没有值,也没有截止日期。它通常由主函数、初始化和测试使用,并作为传入请求的顶级上下文

现在,当对这个连接运行我的查询时,我应该使用什么上下文

下面是使用连接的示例:

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

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

mongoCursor, err := mongoConnection.Aggregate(context.TODO(), aggregationPipeline, pipeOptions)
我的问题是:光标的上下文应该是什么应该是后台吗()我在考虑是否应该取消它(当我的查询返回数据时)

在文档中,对于TODO(),它表示:

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


好吧。。。那么,我应该使用什么样的上下文来进行聚合查询呢?

Background
TODO
是完全相同的,也没有什么特别的地方。嗯,你怎么知道的?这在上下文文档中并不清楚。另外,你知道我是否应该在我的。。。上下文?除了文档说明它之外,您还可以查看源代码:。你需要一个上下文,所以你必须从某个地方开始。如果没有上下文,则只有根上下文来自
Background
TODO
TODO
将用作占位符,用于以后要传递“真实”上下文但尚未使用的情况。如果您只需要一个上下文而不打算取消,请使用
Background
。这是一个纯粹的语义上的差异,它们没有功能上的差异。谢谢你的解释,你会推荐什么样的上下文用于聚合查询呢?当读取操作完成时,应该取消上下文
Background
TODO
完全相同,也没有做任何特殊的操作。嗯,你怎么知道的?这在上下文文档中并不清楚。另外,你知道我是否应该在我的。。。上下文?除了文档说明它之外,您还可以查看源代码:。你需要一个上下文,所以你必须从某个地方开始。如果没有上下文,则只有根上下文来自
Background
TODO
TODO
将用作占位符,用于以后要传递“真实”上下文但尚未使用的情况。如果您只需要一个上下文而不打算取消,请使用
Background
。这是一个纯粹的语义上的差异,它们没有功能上的差异。谢谢你的解释,你会推荐什么样的上下文用于聚合查询呢?读取操作完成后,应取消上下文