Apa itu driver mongodb?

Cara yang disarankan untuk mulai menggunakan driver MongoDB Go adalah dengan menggunakan modul Go untuk menginstal dependensi di proyek Anda. Ini dapat dilakukan dengan mengimpor paket dari

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
4 dan membuat langkah build menginstal dependensi atau dengan menjalankan secara eksplisit

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

Saat menggunakan versi Go yang tidak mendukung modul, driver dapat diinstal menggunakan

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
5 dengan menjalankan

dep ensure -add "go.mongodb.org/mongo-driver/mongo"


Penggunaan

Untuk memulai driver, impor paket

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
6 dan buat
dep ensure -add "go.mongodb.org/mongo-driver/mongo"
7 dengan fungsi
dep ensure -add "go.mongodb.org/mongo-driver/mongo"
8

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))

Pastikan untuk menunda panggilan ke

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
_9 setelah membuat instance klien Anda

defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
_

Untuk konfigurasi dan otentikasi lebih lanjut, lihat

Memanggil

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
_8 tidak memblokir penemuan server. Jika Anda ingin mengetahui apakah server MongoDB telah ditemukan dan terhubung, gunakan metode
import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
1

ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
err = client.Ping(ctx, readpref.Primary())

Untuk memasukkan dokumen ke dalam koleksi, pertama-tama ambil

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
2 lalu
import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
3 instance dari
import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
4

collection := client.Database("testing").Collection("numbers")

Contoh

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
_3 kemudian dapat digunakan untuk menyisipkan dokumen

ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
id := res.InsertedID

Untuk menggunakan

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
_6, Anda perlu menambahkan
import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
7 ke impor Anda

Pernyataan impor Anda sekarang akan terlihat seperti ini

import (
    "context"
    "log"
    "time"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
    "go.mongodb.org/mongo-driver/mongo/readpref"
)

Beberapa metode kueri mengembalikan kursor, yang dapat digunakan seperti ini

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.D
    err := cur.Decode(&result)
    if err != nil { log.Fatal(err) }
    // do something with result....
}
if err := cur.Err(); err != nil {
    log.Fatal(err)
}

Untuk metode yang mengembalikan satu item, instance

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
8 dikembalikan

var result struct {
    Value float64
}
filter := bson.D{{"name", "pi"}}
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err = collection.FindOne(ctx, filter).Decode(&result)
if err == mongo.ErrNoDocuments {
    // Do something when no record was found
    fmt.Println("record does not exist")
} else if err != nil {
    log.Fatal(err)
}
// Do something with result...

Contoh dan dokumentasi tambahan dapat ditemukan di bawah direktori contoh dan di situs web Dokumentasi MongoDB


Masukan

Untuk bantuan dengan driver, silakan posting di Forum Komunitas MongoDB

Fitur dan bug baru dapat dilaporkan di jira. https. // jira. mongodb. org/browse/GODRIVER


Pengujian / Pengembangan

Tes driver dapat dijalankan terhadap beberapa konfigurasi database. Konfigurasi paling sederhana adalah mongod mandiri tanpa autentikasi, tanpa ssl, dan tanpa kompresi. Untuk menjalankan pengujian driver dasar ini, pastikan instance server MongoDB mandiri berjalan di localhost. 27017. Untuk menjalankan pengujian, Anda dapat menjalankan

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
_9 (pada Windows, jalankan
defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
0). Ini akan menjalankan cakupan, menjalankan go-lint, menjalankan go-vet, dan membuat contoh

Menguji Topologi Berbeda

Untuk menguji kumpulan replika atau klaster pecahan, tetapkan

defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
1 untuk perintah
import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
9. Misalnya, untuk set replika lokal bernama
defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
3 terdiri dari tiga node pada port 27017, 27018, dan 27019

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
0

Menguji Autentikasi dan TLS

Untuk menguji autentikasi dan TLS, pertama-tama siapkan klaster MongoDB dengan konfigurasi autentikasi dan TLS. Otentikasi pengujian memerlukan pengguna dengan peran

defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
4 di database
defer func() {
    if err = client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
5. Berikut adalah contoh perintah yang akan menjalankan mongod dengan TLS yang dikonfigurasi dengan benar untuk pengujian. Setel atau ganti PATH_TO_SERVER_KEY_FILE dan PATH_TO_CA_FILE dengan jalur ke file masing-masing

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
_1

Untuk menjalankan tes dengan

import (
    "context"
    "time"

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

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
_9, atur

  • defer func() {
        if err = client.Disconnect(ctx); err != nil {
            panic(err)
        }
    }()
    _7 ke lokasi file CA yang digunakan oleh database
  • defer func() {
        if err = client.Disconnect(ctx); err != nil {
            panic(err)
        }
    }()
    _8 ke lokasi file kunci klien
  • defer func() {
        if err = client.Disconnect(ctx); err != nil {
            panic(err)
        }
    }()
    _9 ke lokasi file kunci klien pkcs8 yang dienkripsi dengan string kata sandi.
    ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    0
  • ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    1 ke lokasi file kunci pkcs8 yang tidak dienkripsi
  • ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    2 ke string koneksi server
  • ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    3
  • ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    4

Sebagai contoh

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
_2

Catatan

  • Bendera
    ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    _5 diperlukan di server agar test suite berfungsi dengan benar
  • Test suite membutuhkan database autentikasi untuk diatur dengan
    ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    6, bukan
    ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    err = client.Ping(ctx, readpref.Primary())
    7

Menguji Kompresi

Driver MongoDB Go mendukung kompresi protokol kabel menggunakan Snappy, zLib, atau zstd. Untuk menjalankan pengujian dengan kompresi protokol kabel, setel

ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
err = client.Ping(ctx, readpref.Primary())
8 ke
ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
err = client.Ping(ctx, readpref.Primary())
9,
collection := client.Database("testing").Collection("numbers")
0, atau
collection := client.Database("testing").Collection("numbers")
1. Sebagai contoh

dep ensure -add "go.mongodb.org/mongo-driver/mongo"
_3

Pastikan on mongod atau mongos menyertakan

collection := client.Database("testing").Collection("numbers")
0 jika menguji kompresi zLib


Kontribusi

Lihat halaman proyek untuk tiket yang perlu diselesaikan. Lihat panduan kontribusi kami untuk detailnya

Mengapa kami menggunakan driver MongoDB?

Sebagai database dokumen, MongoDB memudahkan pengembang untuk menyimpan data terstruktur atau tidak terstruktur . Ini menggunakan format seperti JSON untuk menyimpan dokumen.

Apakah luwak driver MongoDB?

Mongoose adalah library Object Data Modeling (ODM) untuk MongoDB yang didistribusikan sebagai paket npm . Kami akan membandingkan dan membedakan Mongoose dengan menggunakan Node MongoDB asli. js bersama dengan Validasi Skema MongoDB.

Bagaimana cara menginstal driver MongoDB?

1 Jawaban .
Unduh driver mongo untuk Windows dari pecl. php. bersih. .
Buka zip versi driver mongo yang diunduh dan salin. dll ke XAMPP. .
Daftar mongodb. dll di dalam php. ini Tambahkan baris berikut ke dalam php. file ini. .
Mulai ulang XAMPP dan segarkan phpinfo. .
Instal MongoDB di Windows

Apakah ada driver JDBC untuk MongoDB?

Driver JDBC untuk MongoDB memungkinkan kueri SQL pada MongoDB untuk perangkat lunak apa pun yang mendukung JDBC. Dukungan SQL mencakup fungsi, ekspresi, agregasi, dan gabungan termasuk untuk koleksi dengan objek dan array bersarang.