Hur man ansluter MongoDB till Golang

Hur Man Ansluter Mongodb Till Golang



Precis som C-språket är Golang-språket också ett språk med öppen källkod som kan köras på många verktyg på Windows och Linux/Unix-system för att skapa poster. Liksom C++ och Java kan vi skapa en koppling mellan ett MongoDB-klientsystem och Go-språk med vilket golang-verktyg som helst. För att göra detta kommer vi att utföra flera mycket viktiga och nödvändiga steg i Ubuntu 22.04 genom att använda kodverktyget Visual Studio för ett program. Innan vi gör en anslutning till MongoDB-kompassen, tenderar vi att installera MongoDB och Visual Studio Code tillsammans med 'go' och nödvändiga tillägg i guiden för att hjälpa dig på Go-språket.

Installera MongoDB

Vi har laddat ner 'deb'-paketet för MongoDB-servern från dess officiella webbplats. Paketet 'Deb' kan också köras i Ubuntu med hjälp av kommandoverktyget 'dpkg' på terminalen.







Körde MongoDB-serverfilen på terminalen med 'sudo'-rättigheter och angav ett lösenord.



saeedraza@virtualbox:~$ sudo dpkg -jag mongodb-org-server_6.0.3_amd64.deb


Om du hittade MongoDB-tjänsten inaktiv i slutet efter att ha provat 'systemctl'-instruktionen i Ubuntu för att kontrollera status, kan du uppdatera den också. För att aktivera MongoDB, prova systemctl-instruktionen med nyckelorden 'start' och 'enable'.

saeedraza@virtualbox:~$ sudo systemctl starta mongod
saeedraza@virtualbox:~$ sudo systemctl Gör det möjligt mongod
saeedraza@virtualbox:~$ sudo systemctl status mongod

Starta MongoDB

Efter installationen, starta snabbt MongoDb-skalet med hjälp av 'mongo'-frågan. Byt till 'admin'-databasen för att utföra de fortsatta stegen.

saeedraza@virtualbox:~$ mongo
MongoDB-skalversion v5.0.14
ansluter till: mongodb: // 127.0.0.1: 27017 / ? kompressorer =inaktiverad & gssapiServiceName =mongodb
Implicit session: session { 'id' : UUID ( '34cc8e0f-b6b0-4191-adea-676411f66cf5' ) }
MongoDB-serverversion: 6.0.3


Vi skapar en ny användare med administratörsrättigheter med funktionen createUser() .

> använd admin
bytte till db admin
> db.createUser (
... {
... användare: 'Saeed' ,
... pwd: '12345' ,
... roller: [ { roll: 'userAdminAnyDatabase' , db: 'administration' } , 'readWriteAnyDatabase' ]

... } )
Lyckad användare: {
'användare' : 'Saeed' ,
'roller' : [
{
'roll' : 'userAdminAnyDatabase' ,
'db' : 'administration'
} ,
'readWriteAnyDatabase'
]
}


Auktoriserade användaren 'Saeed' med hjälp av inloggningsuppgifter i 'auth'-funktionen och visade de för närvarande ägda databaserna för MongoDB.

> db.auth ( 'Saeed' , '12345' )
ett
> visa dbs
admin   0,000 GB
config  0,000 GB
lokal 0,000 GB

Installera MongoDB-drivrutinen för Golang

Öppna terminalen i Visual Studio Code och flytta in i mappen 'Golang' där du ville lägga till dina källkodsfiler. Kör 'go mod init'-instruktionen med mappnamnet för att skapa en 'go.mod'-fil. Ladda MongoDB-drivrutinen för Go-språket via 'go get'-frågan.

saeedraza@virtualbox:~/Golang$ go mod init Golang


I vissa fall krävs det att man laddar bson-formatet MongoDB-drivrutinen för Golang också.

saeedraza@virtualbox:~/Golang$ gå och hämta go.mongodb.org / mongoförare / bson


Se till att lägga till de nödvändiga tilläggspaketen som 'gopls' i Visual Studio-koden med hjälp av panelen Extensions utan att använda någon instruktion.


Tillsammans med 'gopls' kan Golang kräva att 'dlv'-verktyget är installerat med säkerhet.

Going Code Exempel

Kodfilen 'main.go' har startats med import av några användbara paket som kommer att användas i hela koden för anslutning. Totalt har 7 importer gjorts här. Efter att ha importerat paketen skapade vi en ny struktur med namnet MongoField med 4 datamedlemmar av JSON-typ. 2 av dessa datamedlemmar är strängar och 2 av dem är heltal.

Efter detta har en konstant typ av variabel 'uri' deklarerats med en klientadress eller så måste du lägga till din localhost-adress i den enligt användarnamn och lösenord. Main()-funktionerna börjar med användningen av connect()-funktionen i Golang för att ansluta till MongoDB genom ett 'mongo'-objekt. Funktionen ApplyURI() kommer att ta variabeln 'uri' som sitt argument för att tillämpa på funktionen Client() så att en anslutning kan upprättas via en värdadress. Kontextpaketet har spelat huvudrollen att anropa TODO()-funktionen för att begära en anslutning. Om anslutningen etablerades mellan Visual Studio-koden och MongoDB framgångsrikt kommer den klientreturnerade signalen att läggas till variabeln 'klient'. annars kommer felet att lagras i variabeln 'err'.

'if'-satsen är här för att visa meddelandena i enlighet därmed. Om variabeln 'err' fick ett annat värde än 'nil', kommer Println()-funktionen från formatpaketet 'fmt' att skriva ut det felet på utdataskärmen, terminalen. Paketet 'os' kommer att användas för att avsluta programmet om felet uppstår. Kontextpaketet används återigen här för att hantera timeout för anslutningen som ska upprättas genom detta program. För det specifika timeoutvärdet 'ctx' kommer vårt program att köras. En ny samling 'Person' tillsammans med en ny databas 'Ny' kommer att skapas i klienten MongoDB genom Golang. Println() kommer att visa typen av en samling 'c' med hjälp av funktionen 'TypeOf' från reflect-paketet.

En post 'Rec' skapades med hjälp av strukturen MongoField-datamedlemmar som initieras här en efter en. Posttypen visades och posten 'Rec' kommer att infogas i klient MongoDB med hjälp av insertOne-funktionen med samlingsobjektet 'c'. Den lyckade infogningen leder till en 'resultat'-variabel som håller framgångsvärdet medan 'insertErr'-variabeln kommer att hålla felvärdet. 'if'-satsen används igen för att kontrollera och visa felet vid infogning av en post endast om variabeln 'insertErr' har något annat än 'nil'-värdet. Annars kommer 'else'-delen av uttalandet att innehålla några Println()-satser för att visa typen av en post som ska infogas, post-ID och framgångsmeddelandet för anslutningen och infogningen som har ägt rum. Golang-koden är nu klar.

huvudpaketet
importera (
'sammanhang'
'fmt'
'du'
'reflektera'
'tid'
'go.mongodb.org/mongo-driver/mongo'
'go.mongodb.org/mongo-driver/mongo/options'
)
typ MongoField struct {
Namn  sträng ` json: 'Field Str' `
E-poststräng ` json: 'Field Str' `
Ålder    int ` json: 'Field Int' `
Lön int ` json: 'Field Int' `
}
const uri = 'mongodb: // Användarlösenord @ lokal värd: 27017 / ? maxPoolSize = tjugo & i =majoritet”
func huvud ( ) {
klient, err := mongo.Connect ( sammanhang.ALLA ( ) ,alternativ.Klient ( ) .ApplyURI ( typ ) )
om fela ! = noll {
fmt.Println ( 'Mongo.connect() fel: ' , fel )
os. Avsluta ( ett )
}
ctx, _ := sammanhang. WithTimeout ( sammanhang.Bakgrund ( ) , femton * tid. Andra )
c := klient.Databas ( 'Ny' ) .Samling ( 'Person' )
fmt.Println ( 'Samlingstyp: ' , reflektera.TypeOf ( c ) , ' \n ' )
Rec := MongoField {
Namn: 'EDEN' ,
E-post: 'eden@gmail.com' ,
Ålder: Fyra fem ,
Lön: 50 000 }
fmt.Println ( 'Inspelningstyp: ' , reflektera.TypeOf ( Rec ) , ' \n ' )
resultat, insertErr := c.InsertOne ( ctx, Rec )
om insertErr ! = noll {
fmt.Println ( 'InsertOne Error: ' , insertErr )
os. Avsluta ( ett )
} annan {
fmt.Println ( 'InsertOne resultattyp: ' , reflektera.TypeOf ( resultat ) )
nytt ID = resultat.Infogat ID
fmt.Println ( 'Infogat post-ID: ' , nytt ID ) )
fmt.Println ( 'Framgångsrika anslutna och infogade poster!' )
} }


Spara Golang-koden och öppna terminalen i Golang-mappen. Använd nu 'go'-instruktionen med nyckelordet 'run' för att köra kodfilen 'main.go'. Felsökningen var framgångsrik och samlingen 'Person' har framgångsrikt genererats i MongoDB. Utdata visar samlingstyp, posttyp, resultattyp och 'ID' för en post.

saeedraza @ virtualbox:~ / Golang$ Go Run Main.go
Samlingstyp: * mongo.Samling
Posttyp: main.MongoField
InsertOne resultattyp: * mongo.InsertOneResult
Infogat post-ID: Objekt-ID ( “63a8535ac97b4218230664b6” )
Anslutna och infogade poster framgångsrikt.


Öppna 'MongoDB'-kompassen vid din ände och anslut till sin lokala värd med hjälp av 'URI'.


Efter att ha flyttat in i databasen 'Ny' har vi fått samlingen 'Person' som visas i avsnittet 'Dokument' tillsammans med posten som vi har lagt till.

Slutsats

Den här guiden illustrerar användningen av Go-språket för att lägga till poster i MongoDB-klienten med hjälp av ett Visual Studio Code-verktyg i Linux-systemet. För detta har vi installerat mongodb tillsammans med mongodb-drivrutinen för 'golang' i systemet. Med hjälp av ett Golang-språk har vi skapat en 'go'-fil i MongoDB och diskuterat olika paket och funktioner för Golang för att skapa en anslutning till MongoDB och infoga poster. I slutändan har vi visat resultaten på MongoDB-kompassen som visar att du kan ansluta vilket Golang-verktyg som helst till MongoDB.