You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Couchbase Java SDK MutateInResult返回Index 0 is invalid错误

问题根因

这个报错和额外配置无关,是Couchbase Java SDK子文档操作的默认机制导致的:
默认调用upsert这类MutateIn子操作时,服务端不会返回修改后的字段值,因此返回的MutateInResult对象中子操作结果列表长度为0,直接访问索引0的内容就会抛出Index 0 is invalid异常。

修复方案

两种可选实现方式:

  • 如果确实需要从返回结果中取修改后的值,在对应的子操作spec上开启returnContent配置,告知服务端返回该子操作的执行结果:
public boolean changeDataFetchOrder(String caseId, String taskId, boolean isRandom) {
    var searchId = "case" + ":" + caseId + ":" + taskId;
    Collection collection = bucket.defaultCollection();
    
    var result = collection.mutateIn(searchId, Collections.singletonList(
            upsert("isDataFetchOrderRandom", isRandom)
                    .returnContent(true) // 开启子操作结果返回
    ));
    
    return result.contentAs(0, Boolean.class);
}
  • 如果只是需要确认操作成功、不需要拿到服务端存储的最终值,直接返回入参isRandom即可:mutateIn方法没有抛出异常就代表字段已经成功写入数据库,不需要额外从结果对象中取值,这种方式还能减少网络传输开销。

注:returnContent配置在Couchbase Java SDK 3.2+版本已支持,你当前使用的3.3.0版本完全兼容,不需要升级依赖。

内容的提问来源于stack exchange,提问作者erondem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 23:42:44