Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az útmutatóban egy Java-konzolalkalmazást fejleszt egy Azure DocumentDB-fürthöz való csatlakozáshoz. Az útmutató lépéseket tartalmaz a fejlesztési környezet beállításához, a azure-identity javai Azure SDK-ból származó csomaggal való hitelesítéshez, valamint az adatbázis és a gyűjtemény kezeléséhez.
Előfeltételek
Azure-előfizetés
- Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot
Meglévő Azure DocumentDB-fürt
- Ha nincs klasztere, hozzon létre egy új klasztert
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: Az Azure Cloud Shell használatának első lépései.
Ha a CLI referencia parancsokat helyben szeretnéd futtatni, telepítsd az Azure CLI-t. Ha Windows vagy macOS rendszeren fut, fontolja meg az Azure CLI-t egy Docker-konténerben futtatni. További információkért lásd: Az Azure CLI használata Docker-konténerben.
Ha egy helyileg telepített verziót használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. Az azonosítási folyamat befejezéséhez kövesse a terminálján megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Hitelesítés az Azure-ba az Azure CLI használatával.
Amikor megjelenik a felszólítás, az első használatkor telepítse az Azure CLI bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
Futtasd a az version parancsot, hogy megtudd a telepített verziót és függő könyvtárakat. A legújabb verzióra való frissítéshez futtassa a az upgrade parancsot.
Az ön identitásával konfigurált Microsoft Entra-hitelesítés a fürthöz rendelt
rootszerepkörrel.- A Microsoft Entra-hitelesítés engedélyezéséhez tekintse át a konfigurációs útmutatót.
A Java legújabb verziója.
A konzolalkalmazás konfigurálása
Ezután hozzon létre egy új konzolalkalmazás-projektet, és importálja a fürt hitelesítéséhez szükséges kódtárakat.
Hozzon létre egy új Maven-projektet a Maven parancssori eszközeivel.
mvn archetype:generate -DgroupId=com.cosmicworks -DartifactId=mongodb-console-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseLépjen be a projektkönyvtárba.
cd mongodb-console-appHozzon létre egy új App.java fájlt egy
Mainosztálysal a megfelelő csomagkönyvtárban.mkdir -p src/main/java/com/cosmicworks touch src/main/java/com/cosmicworks/App.javaAdja hozzá a
azure-identityfüggőséget a pom.xml fájlhoz.<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.15.4</version> </dependency>Adja hozzá a
mongodb-driver-syncfüggőséget a pom.xml fájlhoz.<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>5.4.0</version> </dependency>
Csatlakozzon a klaszterhez
Most használja a Azure.Identity könyvtárat, hogy szerezzen egy TokenCredential-et, amelyet a fürthöz való csatlakozáshoz használhat. A hivatalos MongoDB-meghajtó egy speciális felülettel rendelkezik, amelyet implementálni kell ahhoz, hogy tokeneket szerezzen be a Microsoft Entra-tól a fürthöz való csatlakozáshoz.
Először importálja a szükséges osztályokat a Java-osztályfájl tetején.
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;A fő függvényben hozzon létre egy
DefaultAzureCredentialpéldányt, és állítsa be az OpenID Connect (OIDC) visszahívást a tokenek lekéréséhez.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); } };Hozzon létre egy új példányt
MongoCredentiala korábban definiált visszahívás használatával.MongoCredential mongoCredential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK", oidcCallback);Hozzon létre változókat a fürt nevéhez és a teljes hosztvégponthoz.
String clusterName = "<azure-documentdb-cluster-name>"; String host = clusterName + ".global.mongocluster.cosmos.azure.com";Hozzon létre egy
MongoClientSettingspéldányt a gazdagép, a kapcsolati legjobb gyakorlatok és a hitelesítő adatok felhasználásával.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();Hozzon létre egy újat
MongoClienta létrehozott beállítások használatával.MongoClient client = MongoClients.create(settings); System.out.println("Client created");
Gyakori műveletek végrehajtása
Végül használja a hivatalos könyvtárat az adatbázisok, gyűjtemények és dokumentumok gyakori feladatainak elvégzéséhez. Itt ugyanazokat az osztályokat és metódusokat használja, amelyekkel a MongoDB-vel vagy a DocumentDB-vel kezelheti gyűjteményeit és elemeit.
Szerezzen hivatkozásokat a
databaseéscollectionesetében.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");Ábrázolja a dokumentumokat egy
Productosztály használatával.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 }Hozzon létre egy új dokumentumot
collection.replaceOneaz upsert engedélyezésével.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());Egy dokumentum keresésének végrehajtása a
collection.findés az egyedi azonosító segítségével.Bson filter = Filters.eq("_id", "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"); collection.find(filter).forEach(doc -> { System.out.println("Read document _id:\\t" + doc.toJson()); });Általános lekérdezés végrehajtása bináris JSON(BSON) szűrővel.
Bson query = Filters.eq("category", "gear-surf-surfboards"); collection.find(query).forEach(doc -> { System.out.println("Found document:\\t" + doc.toJson()); });Dokumentumok törlése szűrővel és
collection.deleteMany.Bson filter = Filters.eq("clearance", true); collection.deleteMany(filter);