ove*_*nge 1 database go mongodb goroutine mongo-go
在以下代码库中的代码中,创建了 mongodb 客户端(如下所示):
import (
"context"
"time"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
Run Code Online (Sandbox Code Playgroud)
在我们的场景中:
Goroutine 1 用于collection1读写操作:
collection1 := client.Database("testing").Collection("collectionone")
Run Code Online (Sandbox Code Playgroud)
Go-routine 2 同时使用collection1&collection2进行读写操作:
collection2 := client.Database("testing").Collection("collectiontwo")
Run Code Online (Sandbox Code Playgroud)
client在多个 go 例程中使用并发安全吗?
的文档mongo.Database明确指出:
Database 是 MongoDB 数据库的句柄。多个 goroutine 并发使用是安全的。
然后mongo.Client:
Client 是一个句柄,代表 MongoDB 部署的连接池。多个 goroutine 并发使用是安全的。
Collection 是 MongoDB 集合的句柄。多个 goroutine 并发使用是安全的。
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |