MongoDB를 Golang과 연결하는 방법

Mongodbleul Golang Gwa Yeongyeolhaneun Bangbeob



C 언어와 마찬가지로 Golang 언어도 Windows 및 Linux/Unix 시스템의 많은 도구에서 실행되어 레코드를 생성할 수 있는 오픈 소스 언어입니다. C++ 및 Java와 마찬가지로 Golang 도구를 사용하여 MongoDB 클라이언트 시스템과 Go 언어를 연결할 수 있습니다. 이를 위해 프로그램용 Visual Studio 코드 도구를 활용하여 Ubuntu 22.04에서 매우 중요하고 필요한 몇 가지 단계를 수행할 것입니다. MongoDB 나침반과 연결하기 전에 'go'와 함께 MongoDB 및 Visual Studio Code를 설치하는 경향이 있으며 Go 언어에서 도움이 되는 가이드의 필수 확장 프로그램입니다.

몽고DB 설치

공식 웹 사이트에서 MongoDB 서버의 'deb' 패키지를 다운로드했습니다. 'Deb' 패키지는 터미널의 'dpkg' 명령 도구를 사용하여 Ubuntu에서 실행할 수도 있습니다.







'sudo' 권한으로 터미널에서 MongoDB 서버 파일을 실행하고 패스코드를 제공했습니다.



saeedraza@virtualbox:~$ 스도 dpkg -나 mongodb-org-server_6.0.3_amd64.deb


상태를 확인하기 위해 Ubuntu의 'systemctl' 명령을 시도한 후 마지막에 MongoDB 서비스가 비활성화된 것을 발견한 경우에도 업데이트할 수 있습니다. MongoDB를 활성화하려면 'start' 및 'enable' 키워드와 함께 systemctl 명령을 시도하십시오.

saeedraza@virtualbox:~$ 스도 systemctl 시작 mongod
saeedraza@virtualbox:~$ 스도 systemctl ~할 수 있게 하다 몽고
saeedraza@virtualbox:~$ 스도 systemctl 상태 몽고

몽고DB 실행

설치 후 'mongo' 쿼리를 사용하여 MongoDb 셸을 빠르게 시작합니다. 진행 단계를 수행하려면 'admin' 데이터베이스로 전환하십시오.

saeedraza@virtualbox:~$ 몽고
MongoDB 셸 버전 v5.0.14
연결 대상: mongodb: // 127.0.0.1: 27017 / ? 압축기 =비활성화 & gssapiServiceName =몽고디비
암시적 세션: 세션 { 'ID' : UUID ( '34cc8e0f-b6b0-4191-adea-676411f66cf5' ) }
몽고DB 서버 버전: 6.0.3


createUser() 함수를 사용하여 관리자 권한을 가진 새 사용자를 생성합니다.

> 관리자 사용
db 관리자로 전환
> db.createUser (
... {
... 사용자: '사이드' ,
... 비밀번호: '12345' ,
... 역할: [ { 역할: 'userAdminAnyDatabase' , DB: '관리자' } , 'readWriteAnyDatabase' ]

... } )
성공적으로 사용자 추가: {
'사용자' : '사이드' ,
'역할' : [
{
'역할' : 'userAdminAnyDatabase' ,
'db' : '관리자'
} ,
'readWriteAnyDatabase'
]
}


'auth' 기능의 자격 증명을 사용하여 사용자 'Saeed'에게 권한을 부여하고 현재 소유하고 있는 MongoDB의 데이터베이스를 표시했습니다.

> db.auth ( '사이드' , '12345' )
하나
> 쇼 DB
관리자 0.000GB
구성 0.000GB
현지의 0.000GB

Golang용 MongoDB 드라이버 설치

Visual Studio Code에서 터미널을 열고 소스 코드 파일을 추가하려는 'Golang' 폴더 내로 이동합니다. 폴더 이름으로 'go mod init' 명령을 실행하여 'go.mod' 파일을 만듭니다. 'go get' 쿼리를 통해 Go 언어용 MongoDB 드라이버를 로드합니다.

saeedraza@virtualbox:~/Golang$ go mod 초기화 Golang


경우에 따라 Golang용 bson 형식 MongoDB 드라이버도 로드해야 합니다.

saeedraza@virtualbox:~/Golang$ go.mongodb.org로 이동 / 몽고 드라이버 / bson


지침을 사용하지 않고 확장 패널을 사용하여 Visual Studio 코드에서 'gopls'와 같은 필요한 확장 패키지를 추가해야 합니다.


'gopls'와 함께 Golang은 확실히 'dlv' 도구를 설치해야 할 수 있습니다.

진행 코드 예제

코드 파일 'main.go'는 연결을 위해 전체 코드에서 활용될 몇 가지 유용한 패키지 가져오기로 시작되었습니다. 총 7개의 수입품이 이곳에서 만들어졌습니다. 패키지를 가져온 후 4개의 JSON 유형 데이터 멤버가 포함된 MongoField라는 새 구조를 만들었습니다. 이러한 데이터 멤버 중 2개는 문자열이고 2개는 정수입니다.

그런 다음 상수 유형의 변수 'uri'가 클라이언트 주소로 선언되었거나 사용자 이름과 비밀번호에 따라 로컬 호스트 주소를 추가해야 합니다. main() 함수는 'mongo' 객체를 통해 MongoDB와 연결하기 위해 Golang의 connect() 함수를 사용하는 것으로 시작합니다. ApplyURI() 함수는 호스트 주소를 통해 연결을 설정할 수 있도록 Client() 함수에 적용할 인수로 'uri' 변수를 사용합니다. 컨텍스트 패키지는 연결 요청을 위해 TODO() 함수를 호출하는 주요 역할을 수행해 왔습니다. Visual Studio 코드와 MongoDB 간에 연결이 성공적으로 설정되면 클라이언트가 반환한 신호가 'client' 변수에 추가됩니다. 그렇지 않으면 오류가 'err' 변수에 저장됩니다.

'if' 문은 그에 따라 메시지를 표시하기 위해 여기에 있습니다. 'err' 변수가 'nil' 이외의 값을 가지면, 포맷 패키지 'fmt' 패키지의 Println() 함수가 출력 화면인 터미널에 해당 오류를 인쇄합니다. 오류가 발생하면 'os' 패키지를 사용하여 프로그램을 종료합니다. 컨텍스트 패키지는 이 프로그램을 통해 설정되는 연결에 대한 시간 초과를 관리하기 위해 여기에서 다시 사용됩니다. 특정 시간 초과 값 'ctx'의 경우 프로그램이 실행됩니다. 새 데이터베이스 'New'와 함께 새 컬렉션 'Person'이 Golang을 통해 클라이언트 MongoDB에 생성됩니다. Println()은 Reflect 패키지의 'TypeOf' 함수를 사용하여 컬렉션 'c'의 유형을 표시합니다.

여기에서 하나씩 초기화되는 MongoField 데이터 멤버 구조를 사용하여 레코드 'Rec'가 생성되었습니다. 레코드 유형이 표시되고 컬렉션 개체 'c'와 함께 insertOne 함수를 사용하여 레코드 'Rec'가 클라이언트 MongoDB에 삽입됩니다. 성공적인 삽입은 'insertErr' 변수가 실패 값을 보유하는 동안 성공 값을 보유하는 'result' 변수로 이어집니다. 'if' 문은 'insertErr' 변수가 'nil' 값 이외의 값을 보유하는 경우에만 레코드를 삽입할 때 오류를 확인하고 표시하기 위해 다시 사용됩니다. 그렇지 않으면 명령문의 'else' 부분은 삽입할 레코드의 유형, 레코드 ID, 발생한 연결 및 삽입에 대한 성공 메시지를 표시하기 위해 일부 Println() 명령문을 보유합니다. 이제 Golang 코드가 완성되었습니다.

패키지 메인
수입 (
'문맥'
'fmt'
'너'
'반영하다'
'시각'
'go.mongodb.org/mongo-driver/mongo'
'go.mongodb.org/mongo-driver/mongo/options'
)
유형 몽고필드 구조체 {
이름 문자열 ` json: '필드 Str' `
이메일 문자열 ` json: '필드 Str' `
연령 정수 ` json: '필드 인트' `
급여 정수 ` json: '필드 인트' `
}
const uri = '몽고디비: // 사용자 암호 @ 로컬 호스트: 27017 / ? 최대 풀 크기 = 이십 & 안에 =다수”
기능 메인 ( ) {
클라이언트, 오류 := mongo.Connect ( 컨텍스트.모두 ( ) ,옵션.클라이언트 ( ) .ApplyURI ( 유형 ) )
만약 잘못 ! = 없음 {
fmt.Println ( 'Mongo.connect() 오류: ' , 잘못 )
OS 종료 ( 하나 )
}
ctx, _ := context.WithTimeout ( 컨텍스트.배경 ( ) , 열 다섯 * 시간.초 )
c := 클라이언트.데이터베이스 ( '새로운' ) .수집 ( '사람' )
fmt.Println ( '컬렉션 유형: ' , 반영합니다.TypeOf ( ) , ' \N ' )
Rec := 몽고필드 {
이름: '에덴 동산' ,
이메일: 'eden@gmail.com' ,
나이: 오분의 사 ,
샐러리: 50000 }
fmt.Println ( '레코드 유형: ' , 반영합니다.TypeOf ( 녹화 ) , ' \N ' )
결과, insertErr := c.InsertOne ( ctx, 녹화 )
만약 삽입 오류 ! = 없음 {
fmt.Println ( 'InsertOne 오류: ' , 삽입 오류 )
OS 종료 ( 하나 )
} 또 다른 {
fmt.Println ( 'InsertOne 결과 유형: ' , 반영합니다.TypeOf ( 결과 ) )
newID = result.InsertedID
fmt.Println ( '삽입된 레코드 ID: ' , 새 ID ) )
fmt.Println ( '성공적으로 연결 및 삽입된 레코드!' )
} }


Golang 코드를 저장하고 Golang 폴더 내에서 터미널을 엽니다. 이제 'run' 키워드와 함께 'go' 명령을 사용하여 'main.go' 코드 파일을 실행합니다. 디버깅에 성공했고 'Person' 컬렉션이 MongoDB에서 성공적으로 생성되었습니다. 출력에는 컬렉션 유형, 레코드 유형, 결과 유형 및 레코드의 'ID'가 표시됩니다.

새드라자 @ 버추얼박스:~ / Golang$ Go Run Main.go
컬렉션 유형: * 몽고.컬렉션
레코드 유형: main.MongoField
InsertOne 결과 유형: * mongo.InsertOneResult
삽입된 레코드 ID: ObjectID ( '63a8535ac97b4218230664b6' )
레코드를 성공적으로 연결하고 삽입했습니다.


끝에서 'MongoDB' 나침반을 열고 'URI'를 사용하여 로컬 호스트에 연결합니다.


'New' 데이터베이스 내에서 이동한 후 추가한 레코드와 함께 'Documents' 섹션에 'Person' 컬렉션이 표시됩니다.

결론

이 가이드는 Linux 시스템에서 Visual Studio Code 도구를 사용하여 MongoDB 클라이언트에 레코드를 추가하기 위해 Go 언어를 사용하는 방법을 보여줍니다. 이를 위해 'golang'용 mongodb 드라이버와 함께 mongodb를 시스템에 설치했습니다. Golang 언어를 사용하여 MongoDB에 'go' 파일을 만들고 MongoDB에 대한 연결을 생성하고 레코드를 삽입하기 위한 Golang의 다양한 패키지 및 기능에 대해 논의했습니다. 결국, 우리는 MongoDB에 어떤 Golang 도구도 연결할 수 있음을 보여주는 MongoDB 나침반에 대한 결과를 시연했습니다.