登录
首页 >  Golang >  Go问答

如何使用官方 mongo-go-driver 连接到 MongoDB Atlas

来源:stackoverflow

时间:2024-04-20 19:54:41 437浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何使用官方 mongo-go-driver 连接到 MongoDB Atlas》,涉及到,有需要的可以收藏一下

问题内容

我正在查看与官方 mongo-go-driver 版本一起提供的教程,连接示例使用 localhost 上的 mongodb 服务器

// set client options
clientoptions := options.client().applyuri("mongodb://localhost:27017")

但是,新托管的 mongodb 服务 atlas 需要用户名和密码才能登录。连接字符串采用格式

mongodb://[username:password@]host1[/[database][?options]]

但是 atlas 的驱动程序示例中没有 golang 示例。

所以我想知道,登录 atlas 的最佳方式是什么,而不需要将密码硬编码到将在 github 上发布的源文件中?


解决方案


我在 aws 上托管我的测试 atlas 集群,因此我希望拥有与 aws 流程类似的凭证管理。来自AWS credentials page

默认提供程序链按以下顺序查找凭据:

  1. 环境变量。

  2. 共享凭据文件。

  3. 如果您的应用程序在 amazon ec2 实例上运行,则为 amazon ec2 的 iam 角色。

因此,我想为我的 atlas 示例的简单登录实现可验证的环境。下面的代码假设已在命令行中发出以下行

export mongo_pw=''

然后以下程序将验证您的连接

package main

import (
    "context"
    "fmt"
    "os"

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

var username = ""
var host1 = ""  // of the form foo.mongodb.net

func main() {

    ctx := context.TODO()

    pw, ok := os.LookupEnv("MONGO_PW")
    if !ok {
        fmt.Println("error: unable to find MONGO_PW in the environment")
        os.Exit(1)
    }
    mongoURI := fmt.Sprintf("mongodb+srv://%s:%s@%s", username, pw, host1)
    fmt.Println("connection string is:", mongoURI)

    // Set client options and connect
    clientOptions := options.Client().ApplyURI(mongoURI)
    client, err := mongo.Connect(ctx, clientOptions)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    err = client.Ping(ctx, nil)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println("Connected to MongoDB!")
}

从这里开始,我原来问题中链接的教程的其余部分将顺利进行。

好了,本文到此结束,带大家了解了《如何使用官方 mongo-go-driver 连接到 MongoDB Atlas》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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