Go 언어로 Azure Cosmos DB의 MongoDB API를 사용하는 마이크로서비스를 만드는 것은 여러 단계를 포함합니다. 이 과정에서는 Go 언어용 MongoDB 드라이버를 사용하여 Azure Cosmos DB에 연결하고, 데이터를 추가하고 조회하는 기본적인 CRUD(Create, Read, Update, Delete) 작업을 수행하는 예제를 살펴볼 것입니다.
먼저, Azure 포털에서 Cosmos DB 인스턴스를 만들고, MongoDB API를 선택해야 합니다. 그 후, 연결 문자열을 얻어 Go 애플리케이션에서 사용할 수 있습니다.
Go 언어용 MongoDB 드라이버를 설치해야 합니다. 터미널에서 다음 명령어를 실행하세요:
go get go.mongodb.org/mongo-driver/mongo
go get go.mongodb.org/mongo-driver/mongo/options
Azure 포털에서 MongoDB API를 사용하여 Cosmos DB 인스턴스를 설정하고, 연결 문자열을 얻습니다.
package main
import (
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
// Cosmos DB 연결 문자열 설정
// 예: "mongodb://<username>:<password>@<your-cosmosdb-url>:10255/?ssl=true&replicaSet=globaldb"
connectionString := "<your-cosmosdb-connection-string>"
// MongoDB 클라이언트 설정
clientOptions := options.Client().ApplyURI(connectionString)
client, err := mongo.NewClient(clientOptions)
if err != nil {
log.Fatal(err)
}
// 연결 시도
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
// DB 및 컬렉션 선택
collection := client.Database("yourDatabaseName").Collection("yourCollectionName")
// MongoDB 연결 테스트
err = client.Ping(ctx, nil)
if err != nil {
log.Fatal(err)
} else {
fmt.Println("Connected to Azure Cosmos DB!")
}
// CRUD 작업 예제
// 여기서 필요한 CRUD 작업 코드를 작성하세요.
// 연결 종료
defer client.Disconnect(ctx)
}
이 코드 스니펫에서는 Azure Cosmos DB에 연결하고, 데이터베이스와 컬렉션을 선택한 후, 연결이 성공적인지 확인합니다.
다음은 Go 언어를 사용하여 MongoDB에 데이터를 삽입하는 예제입니다:
// 데이터 삽입 예제
type MyDocument struct {
ID string `bson:"_id,omitempty"`
Name string `bson:"name,omitempty"`
Value string `bson:"value,omitempty"`
}
// 샘플 문서를 삽입
doc := MyDocument{
Name: "sample",
Value: "data",
}
insertResult, err := collection.InsertOne(ctx, doc)
if err != nil {
log.Fatal(err)
}
fmt.Println("Inserted document with ID:", insertResult.InsertedID)
이 예제에서는 간단한 구조체를 정의하고, 그 구조체의 인스턴스를 새 문서로 MongoDB 컬렉션에 삽입합니다.
MongoDB에서 데이터를 조회하는 방법입니다:
// 데이터 조회 예제
var result MyDocument
filter := bson.M{"name": "sample"}
err = collection.FindOne(ctx, filter).Decode(&result)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Found document: %+v\\\\n", result)
이 코드는 "name" 필드가 "sample"인 문서를 찾아서 결과를 출력합니다.