gpt4 book ai didi

java - 用于文档删除的 Couchbase View

转载 作者:行者123 更新时间:2023-11-30 03:18:29 27 4
gpt4 key购买 nike

我正在使用带有 spring 数据的 couchbase 服务器。另外,对于增删改查操作,我使用 spring org.springframework.data.repository.CrudRepository。我想删除具有相同域名的用户文档。域是用户pojo的一个属性。我能够根据域属性值获取文档。

这是我的存储库类。

public interface UserRepository extends CrudRepository<User, String>{

List<User> findByDomain(Query query);

void deleteByDomain(Query query);

}

findByDomain 的 View 也是,

function (doc, meta) {
if (doc._class == "com.link.pojo.User") {
emit(doc.domain, null);
}
}

这适用于获取同一域名中的所有文档。所以我对deleteByDomain() 函数使用了相同的 View 。它给了我一个错误。似乎这个 View 只适用于获取数据。如何删除同一域中的文档?谢谢。

org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.util.ArrayList<?> to type void for value '[com.link.pojo.User@21dfd606, com.link.pojo.User@6e5c3549, com.link.pojo.User@67ae8439, com.link.pojo.User@726aef5c]'; 
nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.util.ArrayList<?> to type void
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:176)
at org.springframework.data.repository.core.support.QueryExecutionResultHandler.postProcessInvocationResult(QueryExecutionResultHandler.java:75)

最佳答案

您的 View 需要为 View 中的每个对象发出对象 ID。然后获取该 ID 数组,并对每个 ID 调用删除操作。如果它适合您的用例,更好的方法是在要删除的每个对象上设置一个从现在到 X 小时/天/任何时间之间的随机 TTL(如果有很多要删除的内容),并且应该减少集群上的负载。然后,Couchbase 服务器会在它们过期时以交错方式删除它们。如果您需要尽快删除它们,那么显然可以对对象 ID 使用删除调用。

关于java - 用于文档删除的 Couchbase View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com