Megosztás:


Rövid útmutató: Az Azure DocumentDB használata a MongoDB Go-illesztővel

Ebben a rövid útmutatóban egy alapszintű Azure DocumentDB-alkalmazást hoz létre a Go használatával. Az Azure DocumentDB egy NoSQL-adattár, amellyel az alkalmazások a felhőben tárolhatják a dokumentumokat, és hivatalos MongoDB-illesztőprogramokkal érhetik el őket. Ez az útmutató bemutatja, hogyan hozhat létre dokumentumokat, és hogyan hajthat végre alapvető feladatokat az Azure DocumentDB-fürtben a Go használatával.

API-referencia | Forráskód | Csomag (Go)

Előfeltételek

  • Azure-előfizetés

  • Golang 1.18 vagy újabb

Hozzon létre egy Azure DocumentDB-fürtöt

Első lépésként létre kell hoznia egy Azure DocumentDB-fürtöt, amely a NoSQL-adatok tárolásának és kezelésének alapja.

  1. Jelentkezzen be az Azure Portalra (https://portal.azure.com).

  2. Az Azure Portal menüjében vagy a Kezdőlapon válassza az Erőforrás létrehozása elemet.

  3. Az Új lapon keresse meg és válassza ki az Azure DocumentDB-t.

    Képernyőkép az Azure DocumentDB keresésről.

  4. Az Azure DocumentDB-fürt létrehozása oldal Alapok szakaszában válassza a Fürtszint szakaszban a Konfigurálás lehetőséget.

    Képernyőkép a Fürt konfigurálása lehetőségről.

  5. A Méretezés lapon konfigurálja ezeket a beállításokat, majd válassza a Mentés lehetőséget a fürtszintre vonatkozó módosítások megőrzéséhez.

    Érték
    Fürtszint M30 tier, 2 vCore, 8-GiB RAM
    Tárterület szegmensenként 128 GiB

    Képernyőkép egy új Azure DocumentDB-fürt számítási és tárolási beállításairól.

  6. Az Alapok szakaszban konfigurálja a következő beállításokat:

    Érték
    Subscription Az Azure-előfizetés kiválasztása
    Erőforráscsoport Új erőforráscsoport létrehozása vagy meglévő erőforráscsoport kiválasztása
    Fürt neve Globálisan egyedi név megadása
    Location Válasszon egy támogatott Azure-régiót az előfizetéséhez
    MongoDB-verzió A következők szerint válasszon: 8.0
    Rendszergazdai felhasználónév Felhasználónév létrehozása a fürt felhasználói rendszergazdaként való eléréséhez
    Jelszó A felhasználónévhez társított egyedi jelszó használata

    Képernyőkép a fürtparaméterekről.

    Jótanács

    Jegyezze fel a felhasználónévhez és jelszóhoz használt értékeket. Ezeket az értékeket az útmutató későbbi részében használjuk. Az érvényes értékekkel kapcsolatos további információkért tekintse meg a fürt korlátait.

  7. Válassza ki a Tovább: Hálózatkezelés lehetőséget.

  8. A Hálózatkezelés lap Tűzfalszabályok szakaszában konfigurálja az alábbi beállításokat:

    Érték
    Kapcsolati módszer Public access
    Nyilvános hozzáférés engedélyezése az Azure-ban lévő Azure-szolgáltatásokból és erőforrásokból ehhez a fürthöz Engedélyezett
  9. Adjon hozzá egy tűzfalszabályt a jelenlegi klienseszközhöz, hogy hozzáférést biztosítson a fürthöz a + Jelenlegi kliens IP-cím hozzáadása lehetőség kiválasztásával.

    Képernyőkép a hálózati konfigurációkról.

    Jótanács

    Számos vállalati környezetben a fejlesztői gép IP-címei vpn vagy más vállalati hálózati beállítások miatt rejtve vannak. Ezekben az esetekben ideiglenesen engedélyezheti az összes IP-cím elérését az 0.0.0.0 - 255.255.255.255 IP-címtartomány tűzfalszabályként való hozzáadásával. Ezt a tűzfalszabályt csak ideiglenesen használja a kapcsolattesztelés és -fejlesztés részeként.

  10. Válassza az Áttekintés + létrehozás lehetőséget.

  11. Tekintse át a megadott beállításokat, majd kattintson a Létrehozás-ra. A klaszter létrehozása néhány percet vesz igénybe. Várjon, amíg az erőforrás üzembe helyezése befejeződött.

  12. Végül válassza a Menjen az erőforráshoz lehetőséget, hogy navigáljon az Azure DocumentDB-fürthöz a portálon.

Képernyőkép a goto-erőforrás beállításairól.

Szerezze be a fürt hitelesítő adatait

Szerezd be a fürthöz való csatlakozáshoz használt hitelesítő adatokat.

  1. A fürtoldalon válassza a Kapcsolati láncokat lehetőséget az erőforrás menüjében.

  2. A Kapcsolati sztringek szakaszban másolja vagy rögzítse a Kapcsolati sztring mező értékét.

Képernyőkép a kapcsolati sztringek beállításról.

Fontos

A portál kapcsolati sztringje nem tartalmazza a jelszó értékét. A <password> helyettesítő szöveget le kell cserélnie a fürt létrehozásakor megadott hitelesítő adatokkal, vagy interaktívan be kell írnia a jelszót.

A projekt inicializálása

Hozzon létre egy új Go modult az aktuális könyvtárban.

  1. Kezdje egy üres mappában.

  2. Nyisson egy terminált az aktuális könyvtárban.

  3. Inicializáljon egy új Go-modult.

    go mod init azure-documentdb-go-quickstart
    

Telepítse a klienskönyvtárat

Az ügyfélkódtár a Go-on keresztül érhető el modulként go.mongodb.org/mongo-driver/v2/mongo .

  1. Telepítse a MongoDB Go illesztőprogramot a go get használatával.

    go get go.mongodb.org/mongo-driver/v2/mongo
    
  2. Hozzon létre egy új Go-fájlt az alkalmazáskódhoz.main.go

  3. Importálja a szükséges csomagokat az alkalmazás kódjába:

    import (
        "context"
        "fmt"
        "log"
        "time"
    
        "go.mongodb.org/mongo-driver/v2/bson"
        "go.mongodb.org/mongo-driver/v2/mongo"
        "go.mongodb.org/mongo-driver/v2/mongo/options"
    )
    

Objektummodell

Név Description
mongo.Client A MongoDB-hez való csatlakozáshoz használt típus.
mongo.Database Egy adatbázist jelöl a klaszterben.
mongo.Collection Egy adatbázison belüli gyűjteményt jelöl a fürtben.

Példakódok

Az alkalmazás kódja egy elnevezett adventureworks adatbázishoz és egy nevű productsgyűjteményhez csatlakozik. A products gyűjtemény olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az egyedi azonosító és az egyes termékekhez tartozó értékesítési jelző. Az itt található kódminták a leggyakoribb műveleteket hajtják végre a gyűjtemények használatakor.

Az ügyfél hitelesítése

Először csatlakozzon az ügyfélhez egy egyszerű kapcsolati sztring használatával.

  1. Hozza létre a fő függvényt, és állítsa be a kapcsolati sztringet. Cserélje le <your-cluster-name>, <your-username> és <your-password> a tényleges fürtinformációkkal.

    func main() {
        // Connection string for Azure DocumentDB cluster
        connectionString := "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
    
        // Create client options
        clientOptions := options.Client().ApplyURI(connectionString)
    
  2. Csatlakozzon a MongoDB-ügyfélhez, és ellenőrizze a kapcsolatot.

        // Create a new client and connect to the server
        ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
        defer cancel()
    
        client, err := mongo.Connect(ctx, clientOptions)
        if err != nil {
            log.Fatal(err)
        }
        defer client.Disconnect(ctx)
    
        // Ping the primary
        err = client.Ping(ctx, nil)
        if err != nil {
            log.Fatal(err)
        }
    
        fmt.Println("Successfully connected and pinged Azure DocumentDB")
    

Gyűjtemény lekérése

Most szerezze be az adatbázist és a gyűjteményt. Ha az adatbázis és a gyűjtemény még nem létezik, az illesztővel automatikusan létrehozhatja.

  1. Az adatbázisra mutató hivatkozás lekérése.

        // Get database reference
        database := client.Database("adventureworks")
        fmt.Println("Connected to database:", database.Name())
    
  2. Az adatbázison belüli gyűjteményre mutató hivatkozás lekérése.

        // Get collection reference
        collection := database.Collection("products")
        fmt.Println("Connected to collection:", collection.Name())
    

Dokumentum létrehozása

Ezután hozzon létre néhány új dokumentumot a gyűjteményben. A dokumentumokat úgy állíthatja be, hogy az lecserélje a meglévő dokumentumokat, ha már léteznek ugyanazzal az egyedi azonosítóval.

  1. Definiáljon egy terméktípust, és hozzon létre minta termékdokumentumokat.

        type Product struct {
            ID       string  `bson:"_id,omitempty"`
            Name     string  `bson:"name"`
            Category string  `bson:"category"`
            Quantity int     `bson:"quantity"`
            Price    float64 `bson:"price"`
            Sale     bool    `bson:"sale"`
        }
    
        // Create sample products
        products := []Product{
            {
                ID:       "00000000-0000-0000-0000-000000004018",
                Name:     "Windry Mittens",
                Category: "apparel-accessories-gloves-and-mittens",
                Quantity: 121,
                Price:    35.00,
                Sale:     false,
            },
            {
                ID:       "00000000-0000-0000-0000-000000004318",
                Name:     "Niborio Tent",
                Category: "gear-camp-tents",
                Quantity: 140,
                Price:    420.00,
                Sale:     true,
            },
        }
    
  2. Helyezze be a dokumentumokat "upsert" műveletek használatával.

        // Insert documents with upsert
        for _, product := range products {
            filter := bson.M{"_id": product.ID}
            update := bson.M{"$set": product}
            opts := options.Update().SetUpsert(true)
    
            result, err := collection.UpdateOne(ctx, filter, update, opts)
            if err != nil {
                log.Fatal(err)
            }
    
            if result.UpsertedID != nil {
                fmt.Printf("Inserted document with ID: %v\n", result.UpsertedID)
            } else {
                fmt.Printf("Updated document with ID: %s\n", product.ID)
            }
        }
    

Dokumentum lekérése

Ezután végezzen pontolvasási műveletet egy adott dokumentum gyűjteményből való lekéréséhez.

  1. Adja meg a szűrőt egy adott dokumentum azonosító alapján való megkereséséhez.

        // Retrieve a specific document by ID
        filter := bson.M{"_id": "00000000-0000-0000-0000-000000004018"}
        var retrievedProduct Product
    
  2. Hajtsa végre a lekérdezést, és dekódolja az eredményt.

        err = collection.FindOne(ctx, filter).Decode(&retrievedProduct)
        if err != nil {
            log.Fatal(err)
        }
    
        fmt.Printf("Retrieved product: %+v\n", retrievedProduct)
    

Dokumentumok lekérdezése

Végül több dokumentumot is lekérdezhet a MongoDB lekérdezési nyelv (MQL) használatával.

  1. Lekérdezés definiálása adott feltételeknek megfelelő dokumentumok megkereséséhez.

        // Query for products on sale
        queryFilter := bson.M{"sale": true}
        cursor, err := collection.Find(ctx, queryFilter)
        if err != nil {
            log.Fatal(err)
        }
        defer cursor.Close(ctx)
    
  2. Az összes egyező dokumentum lekéréséhez iterálja végig a kurzort.

        fmt.Println("Products on sale:")
        for cursor.Next(ctx) {
            var product Product
            if err := cursor.Decode(&product); err != nil {
                log.Fatal(err)
            }
            fmt.Printf("- %s: $%.2f (Category: %s)\n", product.Name, product.Price, product.Category)
        }
    
        if err := cursor.Err(); err != nil {
            log.Fatal(err)
        }
    }
    

Adatok felfedezése a Visual Studio Code használatával

A Visual Studio Code DocumentDB bővítményével alapvető adatbázis-műveleteket hajthat végre, beleértve az adatok lekérdezését, beszúrását, frissítését és törlését.

  1. Nyissa meg a Visual Studio Code-ot.

  2. Lépjen a Bővítmények nézetre, és keresse meg a kifejezést DocumentDB. Keresse meg a DocumentDB for VS Code bővítményt .

  3. Válassza a bővítmény Telepítés gombját. Várja meg, amíg a telepítés befejeződik. Töltse újra a Visual Studio kódot, ha erre felszólítják.

  4. Lépjen a DocumentDB bővítményre a tevékenységsáv megfelelő ikonjának kiválasztásával.

  5. A DocumentDB-kapcsolatok panelen válassza az + Új kapcsolat... lehetőséget.

  6. A párbeszédpanelen válassza a Service Discovery , majd az Azure DocumentDB – Azure Service Discovery lehetőséget.

  7. Válassza ki az Azure-előfizetését és az újonnan létrehozott Azure DocumentDB-fürtöt.

    Jótanács

    Számos vállalati környezetben a fejlesztői gép IP-címei vpn vagy más vállalati hálózati beállítások miatt rejtve vannak. Ezekben az esetekben ideiglenesen engedélyezheti az összes IP-cím elérését az 0.0.0.0 - 255.255.255.255 IP-címtartomány tűzfalszabályként való hozzáadásával. Ezt a tűzfalszabályt csak ideiglenesen használja a kapcsolattesztelés és -fejlesztés részeként. További információ: tűzfal konfigurálása.

  8. Visszatérve a DocumentDB-kapcsolatok panelre, bontsa ki a fürt csomópontját, és keresse meg a meglévő dokumentum- és gyűjteménycsomópontokat.

  9. Nyissa meg a gyűjtemény helyi menüjét, majd válassza a DocumentDB Scrapbook > New DocumentDB Scrapbook lehetőséget.

  10. Adja meg a következő MongoDB lekérdezési nyelv (MQL) parancsokat, majd válassza az Összes futtatása lehetőséget. Figyelje meg a parancsok kimenetét.

    db.products.find({
      price: { $gt: 200 },
      sale: true
    })
    .sort({ price: -1 })
    .limit(3)
    

Erőforrások tisztítása

Ha végzett az Azure DocumentDB-fürttel, törölheti a létrehozott Azure-erőforrásokat, így nem kell további díjakat fizetnie.

  1. Az Azure Portal keresősávján keresse meg és válassza ki az erőforráscsoportokat.

    Képernyőkép az erőforráscsoportok keresésének lehetőségről.

  2. A listában válassza ki a rövid útmutatóhoz használt erőforráscsoportot.

    Képernyőkép az erőforráscsoportról.

  3. Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.

  4. A törlés megerősítését kérő párbeszédpanelen adja meg az erőforráscsoport nevét annak megerősítéséhez, hogy törölni kívánja azt. Végül válassza a Törlés lehetőséget az erőforráscsoport végleges törléséhez.

    Képernyőkép az erőforráscsoport törlésének megerősítését kérő gombról.