无法通过文档链接删除Azure Cosmos DB中的文档-Java Async V2

时间:2020-06-23 16:16:41

标签: java azure azure-cosmosdb

我正尝试使用Java CosmosDB Async v2库和文档链接来删除Azure Cosmos DB集合之一中的文档。每次尝试对文档执行删除操作时,都会遇到Resource not found问题。我不确定我错过了什么。

这是我到目前为止所拥有的:

public Document deleteDocument(String docId, String collectionName){
    RequestOptions options = new RequestOptions();
    PartitionKey key = new PartitionKey(docId);
    options.setPartitionKey(key);
    String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", this.databaseName, collectionName, docId);
    LOGGER.info("DOCUMENT LINK:" + documentLink);
    return this.client.deleteDocument(documentLink, options).next().block().getResource();
  }

以下是来自Azure CosmosDB的文档信息: Document Information

输入:

this.deleteDocument("beff44de-914a-4250-80c3-108b71989720", "SravanCollection");

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在V4中执行以下操作:

public Mono<CosmosAsyncItemResponse> deleteBookByID(String id, String partitionKey) {
    return container.deleteItem(id, new PartitionKey(partitionKey));}

您可以在此处找到完整的示例应用程序: https://github.com/RaviTella/SpringBootWebFluxCosmosSQL/tree/master/ReadingListWebApp

这应该在V2中起作用。确保您为分区键和id传递正确的值:

 private void deleteBookObservable(String id, String partitionKey) {
    String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", databaseName, 
     collectionName, id);
    RequestOptions reqOpts = new RequestOptions();
    reqOpts.setPartitionKey(new PartitionKey(partitionKey));
    Observable<ResourceResponse<Document>> deleteObservable =
        getClient().deleteDocument(documentLink, reqOpts).toBlocking().first();  
  }
  

强烈建议将V4用于所有新开发。从v2到v4有重大变化。 V4使用Reactor核心实现了反应式扩展。