首页 > 解决方案 > 在多个 goroutine 中使用一个 MongoDB 连接

问题描述

我的 go 代码正在像这样连接到 MongoDB:

uri := "mongodb://localhost:27017"
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyUIR(uri))
if err != nil {
        panic(err)
}

我想创建几个定期查询数据库的 goroutines,并且不确定让每个 goroutine 使用client是否安全。让多个 goroutine 与同一个数据库交互的最传统方法是什么?

标签: mongodbgo

解决方案


单个客户端实例在多个 goroutine 中使用是安全的。从文档:

Client 是一个句柄,表示与 MongoDB 部署的连接池。多个 goroutine 并发使用它是安全的。


推荐阅读