登录
首页 >  Golang >  Go问答

MongoDB集合监视功能出现编译错误并终止运行

来源:stackoverflow

时间:2024-03-14 08:00:28 272浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《MongoDB集合监视功能出现编译错误并终止运行》,聊聊,我们一起来看看吧!

问题内容

我是 mongodb 的新手,我尝试使用“go.mongodb.org/mongo-driver/mongo”库中的 collection.watch() 。以及来自 https://github.com/minhthuy30197/change_stream/blob/master/main.go 的代码。然后我构建并运行它立即停止。

我尝试一次又一次地运行,但它也停止运行。我已经在 go run main.go./teststreams 之间切换,但它仍然停止运行

这是我编辑的代码。

clientOptions := options.Client().
        ApplyURI("mongodb://localhost:27017/test")

    client, err := mongo.Connect(context.TODO(), clientOptions)
    if err != nil {
        log.Fatalf("Failed to create the new client: %v", err)
    }

    ctx := context.Background()
    if err := client.Connect(ctx); err != nil {
        log.Printf("Failed to open client connection: %v", err)
    }
    defer client.Disconnect(ctx)

    coll := client.Database("test").Collection("streams")

    var pipeline interface{}

    for {
        cur, err := coll.Watch(ctx, pipeline)
        if err != nil {
            log.Fatalf("Watch error: %v", err)
        }
        defer cur.Close(ctx)
        log.Println(cur)
        for cur.Next(ctx) {
            elem := CSElem{}
            if err := cur.Decode(elem); err != nil {
                log.Fatalf("Decode error: %v", err)
            }
            log.Println(elem)
        }
        if err := cur.Err(); err != nil {
            log.Fatalf("Error detected: %v", err)
        }
    }

当我编辑时出现错误

2019/08/07 13:46:39 无法打开客户端连接:拓扑为 已连接或连接退出状态 1

我该如何解决?


解决方案


正如评论中提到的,使用 mongo-go-driver v1+ 在建立连接之前需要先创建一个新的 client 实例。例如:

clientOptions := options.Client().ApplyURI("mongodb://localhost:27017/test")
client, err := mongo.NewClient(clientOptions)
if err != nil {log.Fatal(err)}

// Timed out after 10 seconds of trying to connect 
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

err = client.Connect(ctx)
if err != nil { log.Fatal(err)}

以上就是《MongoDB集合监视功能出现编译错误并终止运行》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>