1

我正在尝试将 java POJO 插入到 couchbase 存储中,调用下方的 jsoncas看起来像这样 -

{
"key": "sampleKey",
"myMap": {
    "Messages": [
        {
            "field": "f1",
            "label": "l1"
        },
        {
            "field": "f2",
            "label": "l2"
        },
        {
            "field": "f3",
            "label": "l3"
        },
        {
            "field": "f4",
            "label": "l4"
        }
    ],
    "Orders": [
        {
            "field": "f1",
            "label": "l1"
        },
        {
            "field": "f2",
            "label": "l2"
        },
        {
            "field": "f3",
            "label": "l3"
        },
        {
            "field": "f4",
            "label": "l4"
        },
        {
            "field": "f5",
            "label": "l5"
        }
        ]
    }
}

我已经验证这是一个有效的 JSON,并且当我尝试通过 couchbase GUI 查找此文档时,它仍然作为二进制对象插入,它显示了 base64 编码的字符串。不过,其他一些文件很好。我想知道这是否仅适用于cas方法而不是set.

相关的java代码是这样的:

String myJson = objectMapper.writeValueAsString(cacheObject);
CASResponse response = couchbaseClient.cas(cacheObject.getKey(), casValue.getCas(), myJson, PersistTo.MASTER);

// Java pojo
public class CacheObject
{
    private String key;
    private Map<String, List<FieldLabel>> myMap = new HashMap<String, List<FieldLabel>>();

    // setters and getters
}

任何有关为什么会发生这种情况的指示都将不胜感激。

Update1:​​我使用的是 Couchbase java 客户端版本 1.4.4,服务器版本为 2.5

Update2:我认为这与我的代码或 json 无关,我尝试用一​​个大的 json 文档(有效的)替换我的 json,我在 couchbase GUI 中看到了相同的结果。我认为这是因为文档的大小可能超过 2.5KB。我在上面粘贴的 json 删除了实际的字段和标签,它们是稍长的字符串。奇怪的是,当我修改文档时,低于 960 个字符的文档通常显示为 Json,而略高于 960 个字符的文档则存储为二进制。

4

1 回答 1

0

如果文档的大小超过 2.5KB,则该文档将无法在控制台中编辑,并且可以在名为 documents.js 的文件中更改此值

于 2015-09-16T09:50:08.020 回答