[go] Go 언어에서 MongoDB 데이터베이스 연동 예제

Go 언어에서 MongoDB 데이터베이스를 연결하고 데이터를 조회, 삽입, 업데이트, 삭제하는 방법에 대해 알아보겠습니다.

MongoDB 드라이버 설치

Go 언어에서 MongoDB를 사용하기 위해서는 MongoDB 공식 Go 드라이버를 설치해야 합니다. 이 드라이버는 Go 언어로 MongoDB와의 상호작용을 가능하게 해 줍니다.

go get go.mongodb.org/mongo-driver/mongo

연결 설정

데이터베이스에 연결하려면 MongoDB 서버의 URL과 연결 정보가 필요합니다. 아래 예제는 mongo.Connect 함수를 사용하여 MongoDB에 연결하는 방법을 보여줍니다.

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
    log.Fatal(err)
}
defer func() {
    if err = client.Disconnect(ctx); err != nil {
        log.Fatal(err)
    }
}()

데이터 조회

데이터를 조회하기 위해서는 Find 함수를 사용하여 Cursor를 얻고, Decode 함수를 사용하여 결과를 읽어올 수 있습니다.

collection := client.Database("testdb").Collection("testcollection")
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
cur, err := collection.Find(ctx, bson.D{})
if err != nil {
    log.Fatal(err)
}
defer cur.Close(ctx)
for cur.Next(ctx) {
    var result bson.M
    err := cur.Decode(&result)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(result)
}
if err := cur.Err(); err != nil {
    log.Fatal(err)
}

데이터 삽입

새로운 데이터를 삽입하기 위해서는 InsertOne 함수를 사용하여 데이터를 삽입할 수 있습니다.


ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
_, err = collection.InsertOne(ctx, bson.D{{"name", "Alice"}, {"age", 23}})
if err != nil {
    log.Fatal(err)
}

데이터 업데이트

데이터를 업데이트하려면 UpdateOne 함수를 사용하여 업데이트할 필드 및 값을 지정합니다.


filter := bson.D{{"name", "Alice"}}
update := bson.D{
    {"$inc", bson.D{
        {"age", 1},
    }},
}
updateResult, err := collection.UpdateOne(ctx, filter, update)
if err != nil {
    log.Fatal(err)
}

데이터 삭제

특정 데이터를 삭제하기 위해서는 DeleteOne 함수를 사용하여 데이터를 삭제할 수 있습니다.


deleteResult, err := collection.DeleteOne(ctx, bson.D{{"name", "Alice"}})
if err != nil {
    log.Fatal(err)
}

이제 Go 언어에서 MongoDB 데이터베이스를 연동하는 방법을 알게 되었습니다. 이를 통해 Go 언어로 MongoDB 데이터베이스를 다루는 기본적인 작업을 수행할 수 있을 것입니다.