Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym wprowadzeniu utworzysz podstawową aplikację bazy danych Azure DocumentDB przy użyciu Rust. Azure DocumentDB to magazyn danych NoSQL, który umożliwia aplikacjom przechowywanie dokumentów w chmurze i uzyskiwanie do nich dostępu przy użyciu oficjalnych sterowników bazy danych MongoDB. W tym przewodniku pokazano, jak tworzyć dokumenty i wykonywać podstawowe zadania w klastrze usługi Azure DocumentDB przy użyciu oprogramowania Rust.
Dokumentacja API | Kod źródłowy | Pakiet (crates.io)
Wymagania wstępne
Subskrypcja platformy Azure
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto
- Rust 1.70 lub nowszy
Tworzenie klastra usługi Azure DocumentDB
Aby rozpocząć, musisz najpierw utworzyć klaster usługi Azure DocumentDB, który służy jako podstawa do przechowywania danych NoSQL i zarządzania nimi.
Zaloguj się do witryny Azure Portal (https://portal.azure.com).
W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.
Na stronie Nowy wyszukaj i wybierz pozycję Azure DocumentDB.
Na stronie Tworzenie klastra usługi Azure DocumentDB i w sekcji Podstawy wybierz opcję Konfiguruj w sekcji Warstwa klastra .
Na stronie Skalowanie skonfiguruj te opcje, a następnie wybierz Zapisz aby zapisać zmiany w warstwie klastra.
Wartość Warstwa klastra M30 tier, 2 vCore, 8-GiB RAMPrzechowywanie na odłam 128 GiB
W sekcji Podstawowe skonfiguruj następujące opcje:
Wartość Subscription Wybierz subskrypcję platformy Azure Grupa zasobów Utwórz nową grupę zasobów lub wybierz istniejącą grupę zasobów Nazwa klastra Podaj globalnie unikatową nazwę Lokalizacja Wybieranie obsługiwanego regionu platformy Azure dla subskrypcji Wersja bazy danych MongoDB Wybierz 8.0Nazwa użytkownika administratora Tworzenie nazwy użytkownika w celu uzyskania dostępu do klastra jako administrator użytkownika Hasło Używanie unikatowego hasła skojarzonego z nazwą użytkownika
Wskazówka
Zapisz wartości używane dla nazwy użytkownika i hasła. Te wartości są używane w dalszej części tego przewodnika. Aby uzyskać więcej informacji na temat prawidłowych wartości, zobacz ograniczenia klastra.
Wybierz Dalej: Sieć.
W sekcji Reguły zapory na karcie Sieć skonfiguruj następujące opcje:
Wartość Metoda łączności Public accessZezwól na publiczny dostęp do tego klastra z usług i zasobów w ramach platformy Azure Enabled Dodaj regułę zapory dla bieżącego urządzenia klienckiego, aby udzielić dostępu do klastra, wybierając pozycję + Dodaj bieżący adres IP klienta.
Wskazówka
W wielu środowiskach firmowych adresy IP maszyny deweloperów są ukryte z powodu sieci VPN lub innych ustawień sieci firmowych. W takich przypadkach można tymczasowo zezwolić na dostęp do wszystkich adresów IP, dodając
0.0.0.0-255.255.255.255zakres adresów IP jako regułę zapory. Użyj tej reguły zapory tylko tymczasowo w ramach testowania i programowania połączeń.Wybierz opcję Recenzja + utwórz.
Przejrzyj ustawienia, które podałeś, a następnie wybierz Utwórz. Utworzenie klastra trwa kilka minut. Poczekaj na zakończenie wdrażania zasobów.
Na koniec wybierz pozycję Przejdź do zasobu , aby przejść do klastra usługi Azure DocumentDB w portalu.
Pobieranie poświadczeń klastra
Pobierz poświadczenia używane do nawiązania połączenia z klastrem.
Na stronie klastra wybierz opcję Parametry połączenia w menu zasobów.
W sekcji Parametry połączenia skopiuj lub zarejestruj wartość z pola Parametry połączenia .
Ważna
Parametry połączenia w portalu nie zawierają wartości hasła. Musisz zastąpić element zastępczy <password> poświadczeniami, które wprowadziłeś podczas tworzenia klastra, lub wprowadzić hasło interaktywnie.
Inicjowanie projektu
Utwórz nowy projekt Rust w bieżącym katalogu.
Rozpocznij w pustym katalogu.
Otwórz terminal w bieżącym katalogu.
Utwórz nowy projekt Rust przy użyciu Cargo.
cargo new azure-documentdb-rust-quickstart cd azure-documentdb-rust-quickstart
Instalowanie biblioteki klienta
Biblioteka klienta jest dostępna za pośrednictwem crates.io jako skrzynia mongodb .
Dodaj sterownik MongoDB Rust przy użyciu Cargo.
cargo add mongodbDodaj środowisko uruchomieniowe
tokiodla operacji asynchronicznych.cargo add tokio --features fullDodaj skrzynię
serdedo obsługi serializacji.cargo add serde --features deriveDodaj skrzynię
futuresdla operacji strumienia asynchronicznego.cargo add futuresOtwórz plik src/main.rs dla kodu aplikacji.
Zaimportuj wymagane moduły do kodu aplikacji:
use futures::TryStreamExt; use mongodb::{ bson::doc, options::ClientOptions, Client, Collection, }; use serde::{Deserialize, Serialize};
Model obiektów
| Nazwa | Opis |
|---|---|
Client |
Typ używany do nawiązywania połączenia z bazą danych MongoDB. |
Database |
Reprezentuje bazę danych w klastrze. |
Collection<T> |
Reprezentuje kolekcję w bazie danych w klastrze. |
Przykłady kodu
- Uwierzytelnianie użytkownika
- Zdobądź kolekcję
- Tworzenie dokumentu
- Pobieranie dokumentu
- Wyszukiwanie w dokumentach
Kod w tej aplikacji łączy się z bazą danych o nazwie adventureworks i kolekcją o nazwie products. Kolekcja products zawiera szczegóły, takie jak nazwa, kategoria, ilość, unikatowy identyfikator i flaga sprzedaży dla każdego produktu. Przykłady kodu w tym miejscu wykonują najbardziej typowe operacje podczas pracy z kolekcją.
Uwierzytelnianie klienta
Najpierw połącz się z klientem przy użyciu podstawowych parametrów połączenia.
Utwórz główną funkcję asynchroniową i skonfiguruj parametry połączenia. Zastąp
<your-cluster-name>,<your-username>i<your-password>rzeczywistymi informacjami o klastrze.#[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?;Utwórz klienta bazy danych MongoDB i zweryfikuj połączenie.
// 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");
Zdobądź kolekcję
Teraz pobierz bazę danych i kolekcję. Jeśli baza danych i kolekcja jeszcze nie istnieją, użyj sterownika, aby utworzyć ją automatycznie.
Uzyskaj referencję do bazy danych.
// Get database reference let database = client.database("adventureworks"); println!("Connected to database: {}", database.name());Pobierz odwołanie do kolekcji w bazie danych.
// Get collection reference let collection: Collection<Product> = database.collection("products"); println!("Connected to collection: products");
Tworzenie dokumentu
Następnie utwórz kilka nowych dokumentów w kolekcji. Aktualizuj lub wstaw dokumenty, aby upewnić się, że zastępują one te istniejące dokumenty, które mają ten sam unikatowy identyfikator.
Zdefiniuj strukturę produktu i utwórz przykładowe dokumenty produktu.
// 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, }, ];Wstaw dokumenty przy użyciu operacji upsert.
// 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); } }
Pobieranie dokumentu
Następnie wykonaj operację odczytu punktowego, aby zlokalizować i pobrać określony dokument z kolekcji.
Zdefiniuj filtr, aby znaleźć określony dokument według identyfikatora.
// Retrieve a specific document by ID let filter = doc! { "_id": "00000000-0000-0000-0000-000000004018" };Wykonaj zapytanie i pobierz wynik.
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"), }
Zapytanie o dokumenty
Na koniec wykonaj zapytanie o wiele dokumentów przy użyciu języka zapytań MongoDB (MQL).
Zdefiniuj zapytanie, aby znaleźć dokumenty spełniające określone kryteria.
// Query for products on sale let query_filter = doc! { "sale": true }; let mut cursor = collection.find(query_filter).await?;Iteruj kursor, aby pobrać wszystkie pasujące dokumenty.
println!("Products on sale:"); while let Some(product) = cursor.try_next().await? { println!( "- {}: ${:.2} (Category: {})", product.name, product.price, product.category ); } Ok(()) }
Eksplorowanie danych przy użyciu programu Visual Studio Code
Użyj rozszerzenia DocumentDB w programie Visual Studio Code, aby wykonywać podstawowe operacje bazy danych, w tym wykonywanie zapytań, wstawianie, aktualizowanie i usuwanie danych.
Otwórz program Visual Studio Code.
Przejdź do widoku Rozszerzenia i wyszukaj termin
DocumentDB. Znajdź rozszerzenie DocumentDB dla programu VS Code .Wybierz przycisk Zainstaluj dla rozszerzenia. Poczekaj na zakończenie instalacji. Załaduj ponownie program Visual Studio Code, jeśli zostanie wyświetlony monit.
Przejdź do rozszerzenia usługi DocumentDB , wybierając odpowiednią ikonę na pasku działań.
W okienku Połączenia usługi DocumentDB wybierz pozycję + Nowe połączenie....
W oknie dialogowym wybierz pozycję Odnajdywanie usług , a następnie Pozycję Azure DocumentDB — Azure Service Discovery.
Wybierz subskrypcję platformy Azure i nowo utworzony klaster usługi Azure DocumentDB.
Wskazówka
W wielu środowiskach firmowych adresy IP maszyny deweloperów są ukryte z powodu sieci VPN lub innych ustawień sieci firmowych. W takich przypadkach można tymczasowo zezwolić na dostęp do wszystkich adresów IP, dodając
0.0.0.0-255.255.255.255zakres adresów IP jako regułę zapory. Użyj tej reguły zapory tylko tymczasowo w ramach testowania i programowania połączeń. Aby uzyskać więcej informacji, zobacz konfigurowanie zapory.Wróć do panelu Połączenia DocumentDB, rozwiń węzeł klastra i przejdź do istniejących dokumentów i kolekcji.
Otwórz menu kontekstowe kolekcji, a następnie wybierz pozycję >.
Wprowadź następujące polecenia języka zapytań bazy danych MongoDB (MQL), a następnie wybierz pozycję Uruchom wszystko. Zwróć uwagę na dane wyjściowe poleceń.
db.products.find({ price: { $gt: 200 }, sale: true }) .sort({ price: -1 }) .limit(3)
Uprzątnij zasoby
Po zakończeniu pracy z klastrem usługi Azure DocumentDB możesz usunąć utworzone zasoby platformy Azure, aby nie ponosić dodatkowych opłat.
Na pasku wyszukiwania witryny Azure Portal wyszukaj i wybierz pozycję Grupy zasobów.
Na liście wybierz grupę zasobów używana dla tego szybkiego startu.
Na stronie grupa zasobów wybierz pozycję Usuń grupę zasobów.
W oknie dialogowym potwierdzenia usunięcia wprowadź nazwę grupy zasobów, aby potwierdzić, że zamierzasz ją usunąć. Na koniec wybierz pozycję Usuń , aby trwale usunąć grupę zasobów.