Mettre à jour si le document existe déjà dans le SDK Java Azure Cosmos DB, en créer un s'il n'existe pas


package com.microsoft.azure.documentdb.sample;

import java.util.Date;
import java.util.Iterator;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.microsoft.azure.documentdb.ConnectionMode;
import com.microsoft.azure.documentdb.ConnectionPolicy;
import com.microsoft.azure.documentdb.ConsistencyLevel;
import com.microsoft.azure.documentdb.Document;
import com.microsoft.azure.documentdb.DocumentClient;
import com.microsoft.azure.documentdb.FeedOptions;
import com.microsoft.azure.documentdb.FeedResponse;
import com.microsoft.azure.documentdb.ResourceResponse;

public class HelloCosmodDB002UpdateDocument {

	public static void main(String[] args) throws Exception {

		// Azure Cosmos DB Libraries for Java
		// https://docs.microsoft.com/ja-jp/java/api/overview/azure/cosmosdb?view=azure-java-stable

		String host = "{yourhost}";
		String database_id = "{your_database}";
		String collection_id = "{your_collection}";

		// Get key from Azure Web Console
		// read write key
		String key = "{your_key}";

		String endPoint = "https://" + host + ".documents.azure.com:443";

		ConnectionPolicy policy = new ConnectionPolicy();
		policy.setConnectionMode(ConnectionMode.DirectHttps);

		try (DocumentClient client = new DocumentClient(endPoint, key, ConnectionPolicy.GetDefault(),
				ConsistencyLevel.Session)) {

			// Name? ID?
			String collectionLink = String.format("/dbs/%s/colls/%s", database_id, collection_id);

			JsonObject json;

			FeedOptions options = new FeedOptions();
			options.setEnableCrossPartitionQuery(true);

			FeedResponse<Document> res = client.queryDocuments(collectionLink, "SELECT * FROM c WHERE c.id=\"1000\"",
					options, "{your_pkey}");

			Iterator<Document> itr = res.getQueryIterator();

			if (itr.hasNext()) {
				Document doc = itr.next();
				Gson gson = new Gson();
				json = gson.fromJson(doc.toJson(), JsonObject.class);
			} else {
				json = new JsonObject();
				json.addProperty("id", "1000");
			}

			json.addProperty("text2", "This is test for update.");
			json.addProperty("lastupdate", System.currentTimeMillis());

			Document d = new Document(json.toString());

			ResourceResponse<Document> response = client.upsertDocument(collectionLink, d, null, false);
			client.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


Recommended Posts

Mettre à jour si le document existe déjà dans le SDK Java Azure Cosmos DB, en créer un s'il n'existe pas
Tout supprimer du SDK Java dans Azure CosmosDB
Supprimer les documents dont PK n'est pas configuré dans Azure CosmosDB (Java SDK)
Upsert du SDK Java vers Azure Cosmos DB
Sélectionnez * de Java SDK vers Azure Cosmos DB
Instructions pour l'écriture de traitement lorsque des valeurs existent / n'existent pas dans Java Facultatif
Si hash [: a] [: b] [: c] = 0 dans Ruby, je veux que vous étendiez récursivement même si la clé n'existe pas
Créer des fonctions Azure en Java