我正在对 couchbase 文档进行部分更新,如下所示:
...
MutateInBuilder builder = bucket.mutateIn(id);
for (Map.Entry<String, Object> entry : map.entrySet())
{
builder = builder.upsert(entry.getKey(), entry.getValue());
}
builder.execute();
...
当所有 upsert 调用中的所有值都属于同一类型时,一切正常。
但是,如果某些值是字符串,并且说其他值是布尔值,我们就会遇到异常:
com.couchbase.client.core.CouchbaseException:com.couchbase.client.java.subdoc.SubdocHelper.commonSubdocErrors(SubdocHelper.java:100) 处的 SUBDOC_INVALID_COMBO com.couchbase.client.java.subdoc.AsyncMutateInBuilder$2.call(AsyncMutateInBuilder. java:1094) 在 com.couchbase.client.java.subdoc.AsyncMutateInBuilder$2.call(AsyncMutateInBuilder.java:1052)
在 upsert 的测试用例中,找不到任何更新多个属性的情况。
我们如何在 Couchbase 中插入具有不同类型属性的文档?
编辑#1:
现在,事情变得更奇怪了......如果我在一次迭代中更新超过 16 个属性,我会遇到同样的异常。