Delen via


Quickstart: Azure DocumentDB gebruiken met MongoDB-stuurprogramma voor Rust

In deze quickstart maakt u een eenvoudige Azure DocumentDB-toepassing met behulp van Rust. Azure DocumentDB is een NoSQL-gegevensarchief waarmee toepassingen documenten kunnen opslaan in de cloud en deze kunnen openen met behulp van officiële MongoDB-stuurprogramma's. Deze handleiding laat zien hoe u documenten maakt en basistaken uitvoert in uw Azure DocumentDB-cluster met behulp van Rust.

API-verwijzing | Broncode | Pakket (crates.io)

Vereiste voorwaarden

  • Een Azure-abonnement

  • Rust 1.70 of hoger

Een Azure DocumentDB-cluster maken

Om aan de slag te gaan, moet u eerst een Azure DocumentDB-cluster maken, dat fungeert als de basis voor het opslaan en beheren van uw NoSQL-gegevens.

  1. Meld u aan bij Azure Portal (https://portal.azure.com).

  2. Selecteer vanuit het menu van Azure Portal of op de startpagina de optie Een resource maken.

  3. Zoek en selecteer Azure DocumentDB op de pagina Nieuw.

    Schermopname van zoeken naar Azure DocumentDB.

  4. Selecteer op de pagina Azure DocumentDB-cluster maken en selecteer in de sectie Basisbeginselen de optie Configureren in de sectie Clusterlaag .

    Schermopname van de optie Cluster configureren.

  5. Configureer deze opties op de pagina Schaal en selecteer Opslaan om uw wijzigingen in de clusterlaag te behouden.

    Waarde
    Clusterniveau M30 tier, 2 vCore, 8-GiB RAM
    Opslag per shard 128 GiB

    Schermopname van configuratieopties voor berekening en opslag voor een nieuw Azure DocumentDB-cluster.

  6. Configureer in de sectie Basisbeginselen de volgende opties:

    Waarde
    Subscription Selecteer uw Azure-abonnement
    Resourcegroep Een nieuwe resourcegroep maken of een bestaande resourcegroep selecteren
    Clusternaam Geef een wereldwijd unieke naam op
    Plaats Selecteer een ondersteunde Azure-regio voor uw abonnement
    MongoDB-versie Selecteren 8.0
    Gebruikersnaam van beheerder Een gebruikersnaam maken voor toegang tot het cluster als gebruikerbeheerder
    Wachtwoord Een uniek wachtwoord gebruiken dat is gekoppeld aan de gebruikersnaam

    Schermopname van clusterparameters.

    Aanbeveling

    Noteer de waarden die u gebruikt voor gebruikersnaam en wachtwoord. Deze waarden worden verderop in deze handleiding gebruikt. Zie clusterbeperkingen voor meer informatie over geldige waarden.

  7. Selecteer Volgende: Netwerkverbinding.

  8. Configureer deze opties in de sectie Firewallregels op het tabblad Netwerken :

    Waarde
    Connectiviteitsmethode Public access
    Openbare toegang vanuit Azure-services en -resources binnen Azure tot dit cluster toestaan Ingeschakeld
  9. Voeg een firewallregel toe voor uw huidige clientapparaat om toegang te verlenen tot het cluster door + Huidig client-IP-adres toe te voegen.

    Schermopname van netwerkconfiguraties.

    Aanbeveling

    In veel bedrijfsomgevingen worden IP-adressen van ontwikkelaarscomputers verborgen vanwege een VPN- of andere bedrijfsnetwerkinstellingen. In deze gevallen kunt u tijdelijk toegang tot alle IP-adressen toestaan door het 0.0.0.0 - 255.255.255.255 IP-adresbereik toe te voegen als een firewallregel. Gebruik deze firewallregel alleen tijdelijk als onderdeel van het testen en ontwikkelen van verbindingen.

  10. Kies Beoordelen + creëren.

  11. Controleer de instellingen die u opgeeft en klik vervolgens op Maken. Het duurt een paar minuten om het cluster te maken. Wacht tot de resource-implementatie is voltooid.

  12. Selecteer tot slot Ga naar de resource om naar het Azure DocumentDB-cluster in de portal te gaan.

Schermopname van de opties voor goto-resources.

Clusterreferenties ophalen

Haal de gegevens op die u gebruikt om verbinding te maken met het cluster.

  1. Selecteer op de clusterpagina de optie Verbindingsreeksen in het resourcemenu.

  2. Kopieer of noteer in de sectie Verbindingsreeksen de waarde uit het veld Verbindingsreeks .

Schermopname van de optie verbindingsreeksen.

Belangrijk

De verbindingsreeks in de portal bevat niet de wachtwoordwaarde. U moet de <password> tijdelijke aanduiding vervangen door de referenties die u hebt ingevoerd bij het maken van het cluster of door het wachtwoord interactief in te voeren.

Het project initialiseren

Maak een nieuw Rust-project in uw huidige map.

  1. Begin in een lege map.

  2. Open een terminal in de huidige map.

  3. Maak een nieuw Rust-project met behulp van Cargo.

    cargo new azure-documentdb-rust-quickstart
    cd azure-documentdb-rust-quickstart
    

De clientbibliotheek installeren

De clientbibliotheek is beschikbaar via crates.io als de mongodb crate.

  1. Voeg het MongoDB Rust-stuurprogramma toe met behulp van Cargo.

    cargo add mongodb
    
  2. Voeg de tokio runtime toe voor asynchrone bewerkingen.

    cargo add tokio --features full
    
  3. Voeg de serde krat toe voor serialisatieondersteuning.

    cargo add serde --features derive
    
  4. Voeg de futures krat toe voor asynchrone stroombewerkingen.

    cargo add futures
    
  5. Open het bestand src/main.rs voor uw toepassingscode.

  6. Importeer de vereiste modules in uw toepassingscode:

    use futures::TryStreamExt;
    use mongodb::{
        bson::doc,
        options::ClientOptions,
        Client, Collection,
    };
    use serde::{Deserialize, Serialize};
    

Objectmodel

Naam Beschrijving
Client Type dat wordt gebruikt om verbinding te maken met MongoDB.
Database Vertegenwoordigt een database in het cluster.
Collection<T> Vertegenwoordigt een verzameling in een database in het cluster.

Codevoorbeelden

De code in deze toepassing maakt verbinding met een database met de naam adventureworks en een verzameling met de naam products. De products verzameling bevat details zoals naam, categorie, hoeveelheid, een unieke id en een verkoopvlag voor elk product. De codevoorbeelden voeren hier de meest voorkomende bewerkingen uit wanneer u met een verzameling werkt.

De client verifiëren

Maak eerst verbinding met de client met behulp van een eenvoudige verbindingsreeks.

  1. Maak de asynchrone hoofdfunctie en stel de verbindingsreeks in. Vervang <your-cluster-name>, <your-username>en <your-password> door de werkelijke clustergegevens.

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        // Connection string for Azure DocumentDB cluster
        let connection_string = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";
    
        // Parse connection string into client options
        let client_options = ClientOptions::parse(connection_string).await?;
    
  2. Maak de MongoDB-client en controleer de verbinding.

        // Create a new client and connect to the server
        let client = Client::with_options(client_options)?;
    
        // Ping the server to verify connection
        client
            .database("admin")
            .run_command(doc! { "ping": 1 })
            .await?;
    
        println!("Successfully connected and pinged Azure DocumentDB");
    

Een verzameling ophalen

Haal nu uw database en verzameling op. Als de database en verzameling nog niet bestaan, gebruikt u het stuurprogramma om deze automatisch voor u te maken.

  1. Haal een verwijzing naar de database op.

        // Get database reference
        let database = client.database("adventureworks");
        println!("Connected to database: {}", database.name());
    
  2. Haal een verwijzing op naar de collectie in de database.

        // Get collection reference
        let collection: Collection<Product> = database.collection("products");
        println!("Connected to collection: products");
    

Een document maken

Maak vervolgens een aantal nieuwe documenten in uw verzameling. Plaats de documenten om ervoor te zorgen dat bestaande documenten worden vervangen als ze al bestaan met dezelfde unieke id.

  1. Definieer een productstruct en maak voorbeeldproductdocumenten.

        // Define Product struct for type-safe operations
        #[derive(Debug, Serialize, Deserialize)]
        struct Product {
            #[serde(rename = "_id")]
            id: String,
            name: String,
            category: String,
            quantity: i32,
            price: f64,
            sale: bool,
        }
    
        // Create sample products
        let products = vec![
            Product {
                id: "00000000-0000-0000-0000-000000004018".to_string(),
                name: "Windry Mittens".to_string(),
                category: "apparel-accessories-gloves-and-mittens".to_string(),
                quantity: 121,
                price: 35.00,
                sale: false,
            },
            Product {
                id: "00000000-0000-0000-0000-000000004318".to_string(),
                name: "Niborio Tent".to_string(),
                category: "gear-camp-tents".to_string(),
                quantity: 140,
                price: 420.00,
                sale: true,
            },
        ];
    
  2. Voeg de documenten in door middel van upsert-bewerkingen.

        // Insert documents with upsert
        for product in &products {
            let filter = doc! { "_id": &product.id };
            let update = doc! { "$set": mongodb::bson::to_document(product)? };
    
            let result = collection
                .update_one(filter, update)
                .upsert(true)
                .await?;
    
            if result.upserted_id.is_some() {
                println!("Inserted document with ID: {}", product.id);
            } else {
                println!("Updated document with ID: {}", product.id);
            }
        }
    

Een document ophalen

Voer vervolgens een puntleesbewerking uit om een specifiek document op te halen uit uw verzameling.

  1. Definieer het filter om een specifiek document op id te zoeken.

        // Retrieve a specific document by ID
        let filter = doc! { "_id": "00000000-0000-0000-0000-000000004018" };
    
  2. Voer de query uit en haal het resultaat op.

        let retrieved_product = collection.find_one(filter).await?;
    
        match retrieved_product {
            Some(product) => println!("Retrieved product: {} - ${:.2}", product.name, product.price),
            None => println!("Product not found"),
        }
    

Documenten opvragen

Voer ten slotte query's uit op meerdere documenten met behulp van de MongoDB Query Language (MQL).

  1. Definieer een query om documenten te vinden die voldoen aan specifieke criteria.

        // Query for products on sale
        let query_filter = doc! { "sale": true };
        let mut cursor = collection.find(query_filter).await?;
    
  2. Doorloop de cursor om alle overeenkomende documenten op te halen.

        println!("Products on sale:");
        while let Some(product) = cursor.try_next().await? {
            println!(
                "- {}: ${:.2} (Category: {})",
                product.name, product.price, product.category
            );
        }
    
        Ok(())
    }
    

Uw gegevens verkennen met Visual Studio Code

Gebruik de DocumentDB-extensie in Visual Studio Code om kerndatabasebewerkingen uit te voeren, zoals het uitvoeren van query's, invoegen, bijwerken en verwijderen van gegevens.

  1. Open Visual Studio Code.

  2. Navigeer naar de weergave Extensies en zoek naar de term DocumentDB. Zoek de DocumentDB-extensie voor VS Code .

  3. Selecteer de knop Installeren voor de extensie. Wacht tot de installatie is voltooid. Laad Visual Studio Code opnieuw als hierom wordt gevraagd.

  4. Navigeer naar de DocumentDB-extensie door het bijbehorende pictogram in de activiteitenbalk te selecteren.

  5. Selecteer + Nieuwe verbinding...in het deelvenster DocumentDB-verbindingen.

  6. Selecteer in het dialoogvenster ServiceDetectie en vervolgens Azure DocumentDB - Azure Service Discovery.

  7. Selecteer uw Azure-abonnement en uw zojuist gemaakte Azure DocumentDB-cluster.

    Aanbeveling

    In veel bedrijfsomgevingen worden IP-adressen van ontwikkelaarscomputers verborgen vanwege een VPN- of andere bedrijfsnetwerkinstellingen. In deze gevallen kunt u tijdelijk toegang tot alle IP-adressen toestaan door het 0.0.0.0 - 255.255.255.255 IP-adresbereik toe te voegen als een firewallregel. Gebruik deze firewallregel alleen tijdelijk als onderdeel van het testen en ontwikkelen van verbindingen. Zie Firewall configureren voor meer informatie.

  8. Vouw in het deelvenster DocumentDB-verbindingen het knooppunt voor uw cluster uit en navigeer naar uw bestaande document- en verzamelingsknooppunten.

  9. Open het contextmenu voor de verzameling en selecteer vervolgens DocumentDB Scrapbook > New DocumentDB Scrapbook.

  10. Voer de volgende MQL-opdrachten (MongoDB Query Language) in en selecteer Alles uitvoeren. Bekijk de uitvoer van de opdrachten.

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

De hulpbronnen opschonen

Wanneer u klaar bent met het Azure DocumentDB-cluster, kunt u de Azure-resources verwijderen die u hebt gemaakt, zodat er geen kosten in rekening worden gebracht.

  1. Zoek en selecteer resourcegroepen in de zoekbalk van Azure Portal.

    Schermopname met de optie voor het zoeken naar resourcegroepen.

  2. Selecteer in de lijst de resourcegroep die u voor deze quickstart hebt gebruikt.

    Schermopname van de resourcegroep.

  3. Selecteer op de resourcegroep-pagina de optie Verwijder resourcegroep.

  4. Voer in het bevestigingsvenster voor verwijdering de naam van de resourcegroep in om te bevestigen dat u deze wilt verwijderen. Selecteer Ten slotte Verwijderen om de resourcegroep definitief te verwijderen.

    Schermopname van de bevestigingsknop voor het verwijderen van de resourcegroep.

  • Wat is Azure DocumentDB?