Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze handleiding ontwikkelt u een Java-consoletoepassing om verbinding te maken met een Azure DocumentDB-cluster. De handleiding bevat stappen voor het instellen van uw ontwikkelomgeving, verificatie met behulp van het azure-identity pakket van de Azure SDK voor Java en interactie met de database en verzameling voor het beheren van documenten.
Vereiste voorwaarden
Een Azure-abonnement
- Als u geen Azure-abonnement hebt, maakt u een gratis account
Een bestaand Azure DocumentDB-cluster
- Als u geen cluster hebt, maakt u een nieuw cluster
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
Microsoft Entra-verificatie die is geconfigureerd voor het cluster met uw door uw identiteit verleende
rootrol.- Raadpleeg de configuratiehandleiding om Microsoft Entra-verificatie in te schakelen.
Nieuwste versie van Java.
Uw consoletoepassing configureren
Maak vervolgens een nieuw consoletoepassingsproject en importeer de benodigde bibliotheken om te verifiëren bij uw cluster.
Maak een nieuw Maven-project met behulp van de Maven-opdrachtregelprogramma's.
mvn archetype:generate -DgroupId=com.cosmicworks -DartifactId=mongodb-console-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseNavigeer naar de projectmap.
cd mongodb-console-appMaak een nieuw App.java-bestand met een
Mainklasse in de juiste pakketmap.mkdir -p src/main/java/com/cosmicworks touch src/main/java/com/cosmicworks/App.javaVoeg de
azure-identityafhankelijkheid toe aan uw pom.xml-bestand .<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.15.4</version> </dependency>Voeg de
mongodb-driver-syncafhankelijkheid toe aan uw pom.xml-bestand .<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>5.4.0</version> </dependency>
Verbinding maken met het cluster
Gebruik nu de Azure.Identity bibliotheek om een TokenCredential te krijgen, die u kunt gebruiken om verbinding te maken met uw cluster. Het officiële MongoDB-stuurprogramma heeft een speciale interface die moet worden geïmplementeerd om tokens van Microsoft Entra te verkrijgen voor gebruik bij het maken van verbinding met het cluster.
Importeer eerst de vereiste klassen boven aan uw Java-klassebestand.
import java.util.concurrent.TimeUnit; import org.bson.Document; import org.bson.conversions.Bson; import com.azure.core.credential.TokenCredential; import com.azure.core.credential.TokenRequestContext; import com.azure.identity.DefaultAzureCredentialBuilder; import com.mongodb.MongoClientSettings; import com.mongodb.MongoCredential; import com.mongodb.MongoCredential.OidcCallbackContext; import com.mongodb.MongoCredential.OidcCallbackResult; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.ReplaceOptions; import com.mongodb.client.result.UpdateResult;Maak in de hoofdmethode een
DefaultAzureCredentialexemplaar aan en stel de callback van OpenID Connect (OIDC) in om tokens op te halen.TokenCredential credential = new DefaultAzureCredentialBuilder().build(); MongoCredential.OidcCallback oidcCallback = new MongoCredential.OidcCallback() { @Override public OidcCallbackResult onRequest(OidcCallbackContext context) { TokenRequestContext tokenRequestContext = new TokenRequestContext() .addScopes("https://ossrdbms-aad.database.windows.net/.default"); String token = credential.getTokenSync(tokenRequestContext).getToken(); return new OidcCallbackResult(token); } };Maak een nieuw exemplaar van
MongoCredentialmet behulp van uw eerder gedefinieerde callback.MongoCredential mongoCredential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK", oidcCallback);Maak variabelen voor de naam van het cluster en het volledige hosteindpunt.
String clusterName = "<azure-documentdb-cluster-name>"; String host = clusterName + ".global.mongocluster.cosmos.azure.com";Maak een
MongoClientSettingsexemplaar met behulp van de host, best practices voor verbindingen en de referentie.MongoClientSettings settings = MongoClientSettings.builder() .applyToClusterSettings(builder -> builder .srvHost(host)) .applyToSocketSettings(builder -> builder .connectTimeout(2, TimeUnit.MINUTES)) .applyToSslSettings(builder -> builder .enabled(true)) .retryWrites(true) .credential(mongoCredential) .build();Maak een nieuw
MongoClientmet behulp van de samengestelde instellingen.MongoClient client = MongoClients.create(settings); System.out.println("Client created");
Algemene bewerkingen uitvoeren
Gebruik ten slotte de officiële bibliotheek om algemene taken uit te voeren met databases, verzamelingen en documenten. Hier gebruikt u dezelfde klassen en methoden die u zou gebruiken om te communiceren met MongoDB of DocumentDB om uw verzamelingen en items te beheren.
Haal verwijzingen naar uw
databaseencollection.MongoDatabase database = client.getDatabase("<database-name>"); System.out.println("Database pointer created"); MongoCollection<Document> collection = database.getCollection("<collection-name>"); System.out.println("Collection pointer created");Vertegenwoordig uw documenten met behulp van een
Productklasse.public class Product { private String _id; private String category; private String name; private int quantity; private double price; private boolean clearance; // Getters and setters ommitted for brevity }Maak een nieuw document met
collection.replaceOneupsert ingeschakeld.Document document = new Document() .append("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb") .append("category", "gear-surf-surfboards") .append("name", "Yamba Surfboard") .append("quantity", 12) .append("price", 850.00) .append("clearance", false); Bson match = Filters.eq("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"); ReplaceOptions options = new ReplaceOptions().upsert(true); UpdateResult result = collection.replaceOne(match, document, options); System.out.println("Document upserted with _id:\\t" + result.getUpsertedId().asString().getValue());Voer een zoekopdracht uit voor één document met
collection.finden de unieke id.Bson filter = Filters.eq("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"); collection.find(filter).forEach(doc -> { System.out.println("Read document _id:\\t" + doc.toJson()); });Voer een algemene query uit met behulp van een binair JSON-filter (BSON).
Bson query = Filters.eq("category", "gear-surf-surfboards"); collection.find(query).forEach(doc -> { System.out.println("Found document:\\t" + doc.toJson()); });Documenten verwijderen met behulp van een filter en
collection.deleteMany.Bson filter = Filters.eq("clearance", true); collection.deleteMany(filter);