我正尝试使用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();
}
输入:
this.deleteDocument("beff44de-914a-4250-80c3-108b71989720", "SravanCollection");
谢谢
答案 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核心实现了反应式扩展。