mongodb客户端驱动并发安全吗?

yuvru6vn  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(174)

在下面来自codebase的代码中,创建了mongodb客户端(如下所示):

  1. import (
  2. "context"
  3. "time"
  4. "go.mongodb.org/mongo-driver/mongo"
  5. "go.mongodb.org/mongo-driver/mongo/options"
  6. "go.mongodb.org/mongo-driver/mongo/readpref"
  7. )
  8. ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
  9. defer cancel()
  10. client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))

字符集
在我们的场景中:
Goroutine 1使用collection1进行读写操作:

  1. collection1 := client.Database("testing").Collection("collectionone")


Go例程2使用collection1collection2进行读和写操作:

  1. collection2 := client.Database("testing").Collection("collectiontwo")


client并发在多个go例程中使用安全吗?

ubof19bj

ubof19bj1#

mongo.Database的文档明确指出:
Database是MongoDB数据库的句柄。它可以安全地被多个goroutine并发使用。
mongo.Client
Client是一个句柄,代表一个连接到MongoDB部署的池。它对于多个goroutine并发使用是安全的。
mongo.Collection
Collection是一个MongoDB集合的句柄。它可以安全地被多个goroutine并发使用。
相关链接:goroutine创建多个mongodb连接

ecbunoof

ecbunoof2#

根据mongoDB文档-游标不是goroutine安全的。不要同时在多个goroutine中使用同一个游标。

相关问题