MongoDB golang驱动程序InsertOne来自哪里?

r6vfmomb  于 2023-01-04  发布在  Go
关注(0)|答案(1)|浏览(168)

我使用下面的代码来获取mongodb的客户端:

package connectors

import (
    "context"
    "log"
    "os"
    "time"

    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func GetMongoDBConnection() *mongo.Client {
    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()

    client, err := mongo.Connect(ctx, options.Client().ApplyURI(os.Getenv("MONGODB_URI")))
    if err != nil {
        log.Fatal(err)
    }
    return client

}

我是这样使用它的,来获得连接并将一个文档插入数据库:

dbClient := connectors.GetMongoDBConnection()
coll := dbClient.Database("test").Collection("test")
coll.InsertOne(context.TODO(), bson.M{"key": "value"})

我试着用以下方法来计算时间:

ConnectionTime := time.Now()

dbClient := connectors.GetMongoDBConnection()

fmt.Println(time.Since(ConnectionTime).Milliseconds())

CollSelectionTime := time.Now()

coll := dbClient.Database("test").Collection("test")

fmt.Println(time.Since(CollSelectionTime).Milliseconds())

InsetionTime := time.Now()

coll.InsertOne(context.TODO(), bson.M{"type": "congelada", "type2": "Masalado"})

fmt.Println(time.Since(InsetionTime).Milliseconds())

控制台打印:
0
0
629
因此,629毫秒来自"InsertOne"...但我不明白为什么,因为我试图插入10,000个文档,它花了2000毫秒,所以我实际上不明白这600毫秒来自哪里...
我怎样才能缩短时间...

wlzqhblo

wlzqhblo1#

连接、数据库选择或集合选择只是捕获参数,而不执行任何实际操作。这些参数在执行实际数据库操作时使用。因此,第一次调用InsertOne时,如果尚未连接,则将连接,并执行操作。
连接之后,调用Ping,它将实际连接到DB。

相关问题