Hoe MongoDB te verbinden met Golang

Hoe Mongodb Te Verbinden Met Golang



Net als de C-taal is de Golang-taal ook een open-sourcetaal die op veel tools op Windows- en Linux/Unix-systemen kan worden uitgevoerd om records te maken. Net als C ++ en Java kunnen we een verbinding maken tussen een MongoDB-clientsysteem en Go-taal met behulp van elke golang-tool. Om dit te doen, zullen we verschillende zeer belangrijke en noodzakelijke stappen uitvoeren in Ubuntu 22.04 door de Visual Studio-codetool voor een programma te gebruiken. Voordat we een verbinding maken met MongoDB-kompas, hebben we de neiging om MongoDB en Visual Studio Code samen met 'go' en vereiste extensies in de gids te installeren om u te helpen in de Go-taal.

MongoDB installeren

We hebben het 'deb' -pakket van de MongoDB-server gedownload van de officiële website. Het 'Deb' -pakket kan ook in Ubuntu worden uitgevoerd met behulp van de 'dpkg' -opdrachttool op de terminal.







Het MongoDB-serverbestand op de terminal uitgevoerd met 'sudo' -rechten en een toegangscode verstrekt.



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


Als u de MongoDB-service aan uw kant inactief vond nadat u de 'systemctl' -instructie van Ubuntu had geprobeerd om de status te controleren, kunt u deze ook bijwerken. Om de MongoDB te activeren, probeert u de systemctl-instructie met de trefwoorden 'start' en 'enable'.

saeedraza@virtualbox:~$ sudo systemctl start mongod
saeedraza@virtualbox:~$ sudo systeemctl inschakelen mongod
saeedraza@virtualbox:~$ sudo systemctl status mongod

Start MongoDB

Start na de installatie snel de MongoDb-shell met behulp van de 'mongo' -query. Schakel over naar de 'admin'-database om de volgende stappen uit te voeren.

saeedraza@virtualbox:~$ mongo
MongoDB-shellversie v5.0.14
verbinden met: mongodb: // 127.0.0.1: 27017 / ? compressoren = uitgeschakeld & gssapiServiceName =mongodb
Impliciete sessie: sessie { 'ID kaart' : UUID ( '34cc8e0f-b6b0-4191-adea-676411f66cf5' ) }
MongoDB-serverversie: 6.0.3


We maken een nieuwe gebruiker aan met beheerdersrechten met behulp van de functie createUser().

> gebruik beheerder
overgeschakeld naar db admin
> db.createUser (
... {
... gebruiker: 'Saeed' ,
... pwd: '12345' ,
... rollen: [ { rol: 'userAdminAnyDatabase' , db: 'beheerder' } , 'readWriteAnyDatabase' ]

... } )
Gebruiker succesvol toegevoegd: {
'gebruiker' : 'Saeed' ,
'rollen' : [
{
'rol' : 'userAdminAnyDatabase' ,
'db' : 'beheerder'
} ,
'readWriteAnyDatabase'
]
}


Autoriseerde de gebruiker 'Saeed' met behulp van referenties in de 'auth' -functie en toonde de huidige databases van MongoDB.

> db.auth ( 'Saeed' , '12345' )
een
> dbs laten zien
beheerder   0.000 GB
configuratie 0,000 GB
lokaal 0.000GB

Installeer MongoDB-stuurprogramma voor Golang

Open de terminal in Visual Studio Code en ga naar de map 'Golang' waarin u uw broncodebestanden wilde toevoegen. Voer de instructie 'go mod init' uit met de mapnaam om een ​​'go.mod'-bestand te maken. Laad het MongoDB-stuurprogramma voor de Go-taal via de 'go get'-query.

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


In sommige gevallen is het ook vereist om het MongoDB-stuurprogramma in bson-indeling voor Golang te laden.

saeedraza@virtualbox:~/Golang$ ga naar go.mongodb.org / mongo-chauffeur / bzoon


Zorg ervoor dat u de benodigde uitbreidingspakketten zoals 'gopls' in Visual Studio-code toevoegt met behulp van het paneel Extensies zonder enige instructie te gebruiken.


Samen met 'gopls', kan de Golang vereisen dat de 'dlv' -tool zeker wordt geïnstalleerd.

Going-code voorbeeld

Het codebestand 'main.go' is gestart met de import van enkele nuttige pakketten die in de hele code voor verbinding zullen worden gebruikt. In totaal zijn hier 7 importen gedaan. Na het importeren van de pakketten hebben we een nieuwe structuur gemaakt met de naam MongoField met daarin 4 JSON-type gegevensleden. 2 van deze gegevensleden zijn strings en 2 daarvan zijn gehele getallen.

Hierna is een constant type variabele 'uri' gedeclareerd met een clientadres of u moet uw localhost-adres erin toevoegen volgens de gebruikersnaam en het wachtwoord. De functies main() beginnen met het gebruik van de functie connect() van Golang om verbinding te maken met MongoDB via een 'mongo'-object. De functie ApplyURI() neemt de variabele 'uri' als argument om toe te passen op de functie Client() zodat een verbinding tot stand kan worden gebracht via een hostadres. Het contextpakket speelt de hoofdrol bij het aanroepen van de functie TODO() voor het aanvragen van een verbinding. Als de verbinding tussen de Visual Studio-code en de MongoDB met succes tot stand is gebracht, wordt het door de client geretourneerde signaal toegevoegd aan de variabele 'client'; anders wordt de fout opgeslagen in de variabele 'err'.

De 'if' -instructie is hier om de berichten dienovereenkomstig weer te geven. Als de variabele 'err' een andere waarde heeft dan 'nil', zal de functie Println() van het formaatpakket 'fmt' die fout afdrukken op het uitvoerscherm, de terminal. Het 'os' -pakket zal worden gebruikt om het programma af te sluiten als de fout optreedt. Het contextpakket wordt hier opnieuw gebruikt om de time-out te beheren voor de verbinding die via dit programma tot stand moet worden gebracht. Voor de specifieke time-outwaarde 'ctx' wordt ons programma uitgevoerd. Een nieuwe verzameling 'Persoon' samen met een nieuwe database 'Nieuw' zal worden gemaakt in de client MongoDB via Golang. De Println() zal het type verzameling 'c' weergeven met behulp van de functie 'TypeOf' van het reflect-pakket.

Er is een record 'Rec' gemaakt met behulp van de structuur MongoField-gegevensleden die hier één voor één worden geïnitialiseerd. Het recordtype werd weergegeven en het record 'Rec' wordt ingevoegd in client MongoDB met behulp van de insertOne-functie met het verzamelobject 'c'. De succesvolle invoeging leidt tot een 'resultaat'-variabele die de succeswaarde vasthoudt, terwijl de 'insertErr'-variabele de foutwaarde vasthoudt. De 'if'-instructie wordt opnieuw gebruikt om de fout bij het invoegen van een record alleen te controleren en weer te geven als de 'insertErr'-variabele een andere waarde heeft dan de 'nil'-waarde. Anders bevat het 'else'-gedeelte van de instructie enkele Println()-instructies om het type record weer te geven dat moet worden ingevoegd, de record-ID en het succesbericht voor de verbinding en invoeging die heeft plaatsgevonden. De Golang-code is nu voltooid.

pakket belangrijkste
importeren (
'context'
'fmt'
'jij'
'reflecteren'
'tijd'
'go.mongodb.org/mongo-driver/mongo'
'go.mongodb.org/mongo-driver/mongo/options'
)
type MongoField-structuur {
Naam tekenreeks ` json: 'Veld Str' `
E-mailtekenreeks ` json: 'Veld Str' `
Leeftijd int ` json: 'Veld Int' `
Salaris int ` json: 'Veld Int' `
}
const uri = “mongodb: // Gebruikerswachtwoord @ lokalehost: 27017 / ? maxPoolSize = twintig & in =meerderheid”
func hoofd ( ) {
klant, err := mongo.Connect ( context.ALL ( ) , opties.Klant ( ) .URI toepassen ( type ) )
als fout ! = nihil {
fmt.Println ( 'Mongo.connect() fout: ' , fout )
os. Afsluiten ( een )
}
ctx, _ := context.WithTimeout ( context.Achtergrond ( ) , vijftien * tijd.Tweede )
c := client.Database ( 'Nieuw' ) .Verzameling ( 'Persoon' )
fmt.Println ( 'Collectietype: ' , reflect.TypeOf ( c ) , ' \n ' )
Rec := MongoVeld {
Naam: 'EDEN' ,
E-mail: 'eden@gmail.com' ,
Leeftijd: Vier vijf ,
Salaris: 50000 }
fmt.Println ( 'Recordtype: ' , reflect.TypeOf ( Rec ) , ' \n ' )
resultaat, insertErr := c.InsertOne ( ctx, Rec )
als invoegenErr ! = nihil {
fmt.Println ( 'InsertOne-fout: ' , insertErr )
os. Afsluiten ( een )
} anders {
fmt.Println ( 'InsertOne resultaattype: ' , reflect.TypeOf ( resultaat ) )
newID = resultaat.InsertedID
fmt.Println ( 'Ingevoegde record-ID: ' , nieuweID ) )
fmt.Println ( 'Succesvol aangesloten en records ingevoegd!' )
} }


Sla de Golang-code op en open de terminal in de map Golang. Gebruik nu de instructie 'go' met het sleutelwoord 'run' om het codebestand 'main.go' uit te voeren. De foutopsporing was succesvol en de verzameling 'Persoon' is met succes gegenereerd in de MongoDB. De uitvoer toont het verzamelingstype, recordtype, resultaattype en de 'ID' van een record.

Saeedraza @ virtuele doos:~ / Golang$ Go Voer Main.go uit
Collectietype: * mongo.Collectie
Recordtype: main.MongoField
InsertOne-resultaattype: * mongo.InsertOneResult
Ingevoegde record-ID: ObjectID ( “63a8535ac97b4218230664b6” )
Succesvol verbonden en ingevoegde records.


Open het 'MongoDB' -kompas aan uw kant en maak verbinding met de lokale host met behulp van de 'URI'.


Nadat we binnen de 'Nieuwe' database zijn verhuisd, hebben we de verzameling 'Persoon' weergegeven in het gedeelte 'Documenten', samen met het record dat we hebben toegevoegd.

Gevolgtrekking

Deze handleiding illustreert het gebruik van Go-taal om records toe te voegen in de MongoDB-client met behulp van een Visual Studio Code-tool in het Linux-systeem. Hiervoor hebben we de mongodb samen met de mongodb driver voor “golang” in het systeem geïnstalleerd. Met behulp van een Golang-taal hebben we een 'go'-bestand in MongoDB gemaakt en de verscheidenheid aan pakketten en functies van Golang besproken om een ​​verbinding met MongoDB te maken en records in te voegen. Uiteindelijk hebben we de resultaten op het MongoDB-kompas gedemonstreerd, wat laat zien dat je elke Golang-tool kunt verbinden met MongoDB.