我有這個實作來使用 ReactiveMongoTemplate 基于某些 id 洗掉檔案。我正在嘗試獲取受影響檔案串列的大小,但它始終回傳 0,并且由于它是被動的,我不確定如何獲取已洗掉的記錄數
@Override
public int deleteMongoDataForGivenId(Long id) {
int deletedRecords = 0;
Query query = new Query();
query.addCriteria(where("id").is(id));
Flux<Object> deletedDocs = reactiveMongoTemplate.findAllAndRemove(query, Object.class, "SomeCollection");
if(!deletedDocs.collectList().block().isEmpty()) {
List<Object> listOfRecords = deletedDocs.collectList().block();
deletedRecords = listOfRecords.size();
}
}
uj5u.com熱心網友回復:
這樣做的反應方式是回傳 aMono<Long>而不是阻塞并將單聲道解壓縮為longor int:
public Mono<Long> deleteMongoDataForGivenId(Long id) {
Query query = new Query();
query.addCriteria(where("id").is(id));
return reactiveMongoTemplate
.findAllAndRemove(query, MyDocument.class, "SomeCollection")
.count();
}
必須使用阻塞方法違背了回應式編程的目的,但如果你真的別無選擇,你可以執行以下操作:
public Long deleteMongoDataForGivenId(Long id) {
Query query = new Query();
query.addCriteria(where("id").is(id));
return reactiveMongoTemplate
.findAllAndRemove(query, MyDocument.class, "SomeCollection")
.count()
// Please don't do this!!!
.share().block();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397098.html
標籤:爪哇 春天 MongoDB 弹簧靴 azure-cosmosdb
