Как использовать Go с MongoDB

MongoDB — это документно-ориентированная база данных NoSQL. Если вы хотите использовать его в своих проектах на Golang, хорошие новости — MongoDB поддерживает Golang! Следуйте этому руководству по подключению Go и MongoDB и разработке проектов с их использованием.

В приведенной ниже статье мы точно описываем, как настроить MongoBD в качестве источника данных в Go. Кроме того, мы покажем, как выполнять некоторые основные операции CRUD в базе данных.

Чтобы следовать шагам этого руководства по Golang — MongoDB, вам потребуется Go, установленный на вашем Mac, поэтому убедитесь, что он у вас есть, прежде чем мы начнем.

Установка драйвера Go для MongoDB

Чтобы использовать MongoDB с Go, вам нужен соответствующий драйвер. К счастью, MongoDB предоставляет официальную документацию по этому процессу. Пройдем все этапы вместе.

Отказ от ответственности: в этом посте мы рассматриваем только драйвер Go, для других драйверов MongoDB см. официальную документацию.

Чтобы начать работу с MongoDB в Go, инициализируйте свой проект с модом go в новом каталоге. Вот команды терминала для этого:

mkdir go-quickstart cd go-quickstart go mod init go-quickstart

Затем добавьте зависимость MongoDB с помощью команды go get:

иди и получи go.mongodb.org/mongo-driver/mongo

Теперь вы готовы создать кластер базы данных в своей учетной записи MongoDB. Для этого вам необходимо присоединиться к MongoDB Atlas. Это отличное решение для знакомства с MongoDB в Golang, поскольку оно имеет бесплатный уровень и размещается в облаке.

Что вам нужно сделать, чтобы подключить драйвер MongoDB Golang, так это создать учетную запись Atlas (вы можете просто войти через свою учетную запись Google), развернуть бесплатный кластер, добавить свой IP-адрес в список разрешенных подключений, создать пользователя базы данных для кластера, который вы развернуты, подключитесь к кластеру и начните работать с вашими данными.

развертывание базы данных cloud.mongodb.com

Пройдите эти шаги, начиная с регистрации на https://account.mongodb.com/account/register. Если вы столкнулись с какой-либо икотой, вот официальное руководство к каждому из шагов.

Ни для одного из них не требуется код, и вы сможете выполнять действия в интерфейсе Atlas. После того, как вы выполните этот шаг, мы можем продолжить настройку подключения к вашему кластеру базы данных MongoDB с помощью драйвера MongoDB Go.

Обратите внимание, что когда вы подключаетесь к своему кластеру, вам нужно выбрать Подключиться к вашему приложению, а затем на следующей странице скопировать строку подключения, чтобы добавить ее в код вашего приложения:

Подключиться к кластеру0

Скопируйте свой фрагмент, чтобы использовать его позже в редакторе кода. Нам нравится сохранять фрагменты кода в SnippetsLab, специальном приложении для размещения библиотеки фрагментов кода.

Фрагмент соединения mongodb в SnippetsLab

Не забудьте заменить и в сниппете паролем к базе данных, который вы создали при регистрации в Atlas. Мы рекомендуем сохранить ваши учетные данные для входа в безопасное место.

Мы использовали секреты приложения, чтобы сохранить учетные данные для входа в кластер MongoDB:

сохранить учетные данные для входа в кластер MongoDB

Теперь создайте и сохраните файл, содержащий ваше приложение, в папке go-quickstart (вы можете использовать другое имя для папки вашего проекта, но убедитесь, что вы внесли соответствующие изменения в код, который мы предоставили на предыдущих шагах).

Мы разрабатываем этот проект в CodeRunner, приложении, которое позволяет сохранять, редактировать и запускать код на более чем 25 языках, включая Go. Итак, чтобы написать нашу программу, мы создали main.go в CodeRunner, используя пример кода MongoDB из это официальное руководство и поместите файл в нашу корневую папку для проекта /go-quickstart.

Пример кода MongoDB

Вот код, который мы использовали:

основной импорт пакета (“context” “encoding/json” “fmt” “log” “os” “github.com/joho/godotenv” “go.mongodb.org/mongo-driver/bson” “go.mongodb.org/ mongo-driver/mongo” “go.mongodb.org/mongo-driver/mongo/options” ) func main() { if err := godotenv.Load(); err != nil { log.Println(“Файл .env не найден”) } uri := os.Getenv(“MONGODB_URI”) if uri == “” { log.Fatal(“Вы должны установить переменную окружения ‘MONGODB_URI’ , См. \n\t } client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err != nil { panic(err) } defer func() { if err := client.Disconnect(context.TODO()); err != nil { panic(err) } }() coll := client.Database(“sample_mflix”).Collection(“movies”) title := “Назад в будущее” var result bson.M err = coll.FindOne(context.TODO(), bson.D{{“title”, title}}).Decode(&result) if err == mongo.ErrNoDocuments { fmt.Printf (“Не найден документ с заголовком %s\n”, title) return } if err != nil { panic(err) } jsonData, err := json.MarshalIndent(result, “”, ” “) if err ! = nil { паника (ошибка) } fmt.Printf (“%s\n”, jsonData) }

Теперь, чтобы успешно запустить этот код, вам также нужен файл .env в корневой папке вашего приложения (в нашем примере /go-quickstart).

Чтобы создать пустой файл .env, мы использовали эту команду терминала:

коснитесь .env

Затем мы добавили нашу строку подключения в файл .env с помощью ряда команд терминала:

  1. Запустите vim .env в Терминале.
  2. Установите значение для MONGODB_URI с помощью: MONGODB_URI=”mongodb+srv://:@cluster0.icb48.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
  3. Выполнить: wq! команда.
  4. Выполните cat .env в Терминале, чтобы убедиться, что ваши изменения были сохранены правильно. Ваш файл .env должен выглядеть так: MONGODB_URI=”mongodb+srv://:@cluster0.icb48.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

Теперь вы готовы выполнить пинг базы данных MongoDB с помощью команды:

иди беги main.go

Если вы загрузили пробную базу данных, как указано в шагах по настройке учетной записи Atlas, вы должны получить ответ, содержащий информацию из этой пробной базы данных.

В нашем примере мы получили информацию из нашей библиотеки MongoDB о голливудском фильме:

информация из нашей библиотеки MongoDB о голливудском фильме

CRUD-операции MongoDB

Для выполнения операций CRUD в MongoDB необходимо импортировать пакет BSON. Поскольку его импорт включен в код, который мы использовали для нашего примера программы Go выше (из официального руководства MongoDB), вам не нужно делать это вручную.

Но если вы пишете свою собственную вещь, строка для импорта:

“go.mongodb.org/mongo-драйвер/bson”

Теперь давайте прочитаем некоторые данные из вашего образца базы данных MongoBD.

Прочитать документ в MongoDB

Вот код, который нужно добавить на main.go, чтобы запросить информацию о фильме «Комната»:

coll := client.Database(“sample_mflix”).Collection(“movies”) var result bson.M err = coll.FindOne(context.TODO(), bson.D{{“title”, “The Room”}} ).Decode(&result) if err != nil { if err == mongo.ErrNoDocuments { // Эта ошибка означает, что ваш запрос не соответствует ни одному документу. возврат } паника (ошибка) }

Вы также можете скопировать полный код примера файла main.go в официальном руководстве по MongoDB. здесь.

Далее переходим к операциям записи.

Создайте документ в MongoDB

Добавьте документ в свою коллекцию с помощью этого кода:

coll := client.Database(“insertDB”).Collection(“movies”) doc := bson.D{{“title”, “Солнечные дни и ночи 1672 года”}, {“text”, “Это просто test”}} результат, ошибка := coll.InsertOne(context.TODO(), doc) if err != nil { panic(err) }

Полный пример кода доступен в официальном руководстве по MongoDB на эта страница.

Запустите свой код и получите подтверждение того, что ваш документ был вставлен:

MongoDB main.go

Для проверки запустите поисковый запрос. Вы должны получить информацию об образце обратно:

Проверьте свой документ в базе данных MongoDB

Обновить документ в MongoDB

Теперь вы можете вносить изменения в запись базы данных. Для этого используйте инструмент обновления.

Вот пример кода для этого:

coll := client.Database(“insertDB”).Collection(“movies”) id, _ := примитив.ObjectIDFromHex(“6205210bc9748a7cee6af8cb”) filter := bson.D{{“_id”, id}} update := bson .D{{“$set”, bson.D{{“average_rtng”, 4.5}}}} результат, ошибка := coll.UpdateOne(context.TODO(), filter, update) if err != nil { panic( ошибся) }

Ваш результат после запуска обновленного программного кода должен выглядеть следующим образом: Документы обновлены: 1

Запустите поисковый запрос, чтобы проверить его. Вот как могут выглядеть ваши результаты (обратите внимание, что мы запустили довольно много обновлений, чтобы перепроверить код, поэтому наши результаты содержат немного больше информации, чем только с вышеприведенным обновлением):

обновить документ в базе данных MongoDB

Удалить документ в MongoDB

И, наконец, давайте посмотрим, как мы можем удалить документы из нашей базы данных MongoDB.

Этот код удалит первый совпадающий заголовок в вашей коллекции:

coll := client.Database(“insertDB”).Collection(“movies”) filter := bson.D{{“title”, “Ваш недавно обновленный заголовок”}} результат, err := coll.DeleteOne(context.TODO (), фильтр) if err != nil { panic(err) }

удалить документы из нашей базы данных MongoDB

Вывод

Как видите, настройка вашей базы данных MongoDB для работы с Golang занимает всего несколько строк кода. Мы надеемся, что это руководство было полезным на вашем пути к освоению баз данных Golang и MongoDB. Go и MongoDB отлично работают вместе и могут быть вашими удобными помощниками во многих проектах, поэтому мы надеемся, что вы смогли понять, как использовать MongoDB с помощью этого руководства.

Обратите внимание, что MongoDB Atlas позволяет создать только один бесплатный кластер, а за дополнительные придется платить.

Для нашего проекта мы также использовали три дополнительных приложения — CodeRunner, SnippetsLab и Secrets. Вы можете найти их все в Setapp, курируемом инновационном сервисе инструментов для ежедневной продуктивности и автоматизации рутинных задач.

Откройте для себя инструменты для программирования, очистки вашего Mac, резервного копирования файлов и многого другого в Setapp. Начните с 7-дневной бесплатной пробной версии прямо сейчас и сразу же попробуйте CodeRunner, SnippetsLab, Secrets и десятки других инструментов.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *