MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Memulai dengan Driver MongoDB Go

Pada bulan Maret 2019, driver GO resmi yang siap produksi untuk MongoDB telah dirilis dan telah menerima pembaruan berkelanjutan sejak peluncurannya. Dalam tutorial ini, kita akan belajar melakukan operasi CRUD MongoDB sederhana menggunakan driver Go.

Prasyarat

Ada dua hal yang diperlukan sebelum kita memulai tutorial ini.

  • Go harus diinstal pada mesin Anda. Go versi 1.15 digunakan untuk tutorial ini. Anda dapat mengunduh paket Go dari tautan ini.
  • Instal versi terbaru MongoDB di komputer Anda dan mulai server lokal MongoDB.

Instalasi Driver MongoDB

Instal driver MongoDB go dengan menjalankan perintah berikut:

go get go.mongodb.org/mongo-driver

Jika Anda menggunakan Modul Go, buat file go.mod dan perintah di atas akan menambahkan ketergantungan yang diperlukan dalam file mod. File ini mengunci semua persyaratan proyek ke versi yang benar.

Menyiapkan File Utama

Buat file main.go di folder proyek Anda dan buka di IDE Anda. Sebelum kita menulis kode untuk operasi MongoDB, mari impor semua paket yang diperlukan ke dalam file.

package main

import (

  "context"

  "fmt"

  "log"



  "go.mongodb.org/mongo-driver/bson"

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

  "go.mongodb.org/mongo-driver/mongo/options"

)

Sekarang, Buat variabel global berikut yang akan kita gunakan di semua fungsi operasi CRUD.

var client *mongo.Client

var collection *mongo.Collection

var ctx = context.TODO()

Juga, buat struktur untuk jenis dokumen.

type Person struct {

Name string

Age  int

City string

}

Menghubungkan ke MongoDB

Sekarang pengaturan dasar sudah siap. Mari kita buat fungsi pertama kita untuk menghubungkan ke MongoDB.

func connect() *mongo.Client {

  clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")

  client, err := mongo.Connect(ctx, clientOptions)

  if err != nil {

       log.Fatal(err)

  }

err = client.Ping(ctx, nil)

  if err != nil {

       log.Fatal(err)

  }

  fmt.Println("Connected to MongoDB!")

  return client

}

Fungsi ini akan mengatur koneksi dengan MongoDB yang berjalan secara lokal dan mengembalikan objek klien. Setelah metode connect mengembalikan objek klien, kita dapat menggunakan metode Ping() untuk memeriksa apakah koneksi berhasil atau tidak. Jika metode Ping() mengembalikan kesalahan apa pun, kami dapat meningkatkan kesalahan dan mengembalikannya.

Operasi Sisipkan

Untuk menyisipkan hanya satu dokumen, kita dapat menggunakan metode insertOne dan untuk menyisipkan beberapa dokumen secara bersamaan, kita dapat menggunakan metode insertMany. Berikut ini adalah fungsi untuk memasukkan satu dokumen ke dalam koleksi Person:

func insertOne() {

  akash := Person{"Akash", 28, "Bengaluru"}

  res, err := collection. InsertOne (ctx, akash)

  if err != nil {

       log.Fatal(err)

  }

  fmt.Println("Inserted document: ", res.InsertedID)

}

Berikut adalah fungsi untuk menambahkan beberapa dokumen ke koleksi:

func insertMany() {

  akash := Person{"Akash", 28, "Bengaluru"}

  bob := Person {"Bob", 30, "New York"}

  robin := Person {"Robin", 25, "London"}

 

  persons := []interface{}{akash, bob, robin}



  res, err := collection.InsertMany(ctx, persons)

  if err != nil {

       log.Fatal(err)

  }

  fmt.Println("Inserted documents: ", res.InsertedIDs)

}

Untuk kedua operasi, kita perlu menggunakan struct Person yang kita buat sebelumnya dan menginisialisasinya dengan data kita. Dengan fungsi InsertMany, kita harus melewati antarmuka tipe untuk semua dokumen.

Operasi Pengambilan

Untuk menemukan data dari koleksi, kami akan memerlukan pass filter jadi pastikan Anda telah mengimpor paket bson. Kami akan menggunakan tipe bson.D untuk membuat filter menggunakan objek bson.

func retrieveOne() {

  var result Person

  filter := bson.D{{"name", "Akash"}}

  err := collection.FindOne(ctx, filter).Decode(&result)

  if err != nil {

       log.Fatal(err)

  }

  fmt.Printf("Found a single document: %+v\n", result)

}

Dengan cara yang sama, kita dapat menggunakan metode Temukan untuk mengambil semua dokumen yang cocok.

func retrieveAll() {

  findOptions := options.Find()

  findOptions.SetLimit(2)

  var results []*Person

  cur, err := collection.Find(ctx, bson.D{{}}, findOptions)

  if err != nil {

       log.Fatal(err)

  }

  // Loop through the cursor

  for cur.Next(context.TODO()) {

       var elem Person

       err := cur.Decode(&elem)

       if err != nil {

            log.Fatal(err)

       }

       results = append(results, &elem)

  }

  if err := cur.Err(); err != nil {

       log.Fatal(err)

  }

  cur.Close(context.TODO())

}

Anda dapat menggunakan paket opsi untuk menentukan opsi seperti batas atau pesanan.

Operasi Pembaruan

Sama seperti metode FineOne, untuk update juga bisa menggunakan metode UpdateOne dengan objek filter bson. Kode ini akan memperbarui semua dokumen dengan nama Akash dan meningkatkan nilai Age sebanyak satu.

func update() {

filter := bson.D{{"name", "Akash"}}

update := bson.D{

     {"$inc", bson.D{

         {"Age", 1},

     }},

}

updateResult, err := collection.UpdateOne(context.TODO(), filter, update)

if err != nil {

     log.Fatal(err)

}

fmt.Printf("Updated documents: %+v\n", updateResult)

}

Operasi Hapus

Untuk menghapus dokumen dari koleksi apa pun, Anda dapat menggunakan metode DeleteOne atau DeleteMany. Di sini juga, kita dapat melewatkan objek filter bson untuk mencocokkan dokumen dan menghapusnya.

func delete() {

deleteResult, err := collection.DeleteMany(ctx, bson.D{{}})

if err != nil {

     log.Fatal(err)

}

fmt.Printf("Deleted %v documents in the trainers collection\n", deleteResult.DeletedCount)

}

Jika Anda meneruskan objek bson.D{}} sebagai parameter filter, maka semua dokumen akan dihapus. Anda dapat menggunakan metode collection.Drop() untuk menghapus seluruh koleksi.

Setelah semua fungsi ini siap, Anda dapat menggunakannya dalam fungsi driver Anda sesuai dengan kebutuhan Anda. Mudah-mudahan, ini cukup untuk membantu Anda mulai menulis fungsi MongoDB di Go. Untuk informasi lebih lanjut, Anda dapat merujuk ke dokumentasi resmi untuk driver Go Mongo.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konversikan MongoDB BsonDocument ke JSON yang valid di C#

  2. Cluster MongoDB yang terdistribusi secara geografis di AWS di wilayah UE

  3. MongoDB - Buat Hubungan

  4. Perbedaan antara bidang id dan _id di MongoDB

  5. Pencadangan MongoDB Otomatis