1

我是Couchbase的新手用户,我正在尝试将文档插入到默认存储桶中,如下所示。我发现了以下两种将json文档插入桶中的方法:1)通过准备JsonDocument和upsert插入桶中

    StringBuilder strBuilder = new StringBuilder();
    strBuilder.append("{'phone':{'y':{'phonePropertyList':{'dskFlag':'false','serialId':1000,'inputTray':{'LIST': {'e':[{'inTray':{'id':'1','name':'BypassTray','amount': {'unit':'sheets','state':'empty','typical':'0','capacity':'100'}");
    String LDATA = strBuilder.toString();   
    Cluster cluster = CouchbaseCluster.create("localhost");
Bucket bucket = cluster.openBucket("default");
JsonObject deviceinfoObj = JsonObject.create().put("phoneinfo", LDATA); 
bucket.upsert(JsonDocument.create("phone", deviceinfoObj));

2) 或者通过使用像 SQL String query = "upsert into default(KEY, VALUE) values(LDATA)" 这样的直接查询

我无法找到如何像 noram sql 语句那样执行上述查询示例:Statement st = connection.createStatement(); 结果集 rs = st.executeQuery(query);

如何使用 N1QLQuery 在 Couchbase Bucket 中插入 json 文档。

我找到了两种获取文档的方法。

i) 使用文档 ID bucket.get("phone").content().get("phoneinfo") 直接获取文档

ii) 使用 N!QueryResultSet N1qlQueryResult result = bucket.query(N1qlQuery.simple("select * from default;"));获取文档

            for (N1qlQueryRow row : result) { 
           System.out.println(row);
        }

我对在 Couchbase 中的存储桶中插入和获取文档的不同方法感到困惑。如果我使用第一种方法插入文档,我需要准备带有一些键和值的 JsonObject 作为整个 jsondocument。

所以我认为我最好使用第二种方法插入文档,这样我就可以使用 N1QLResultSet(第二种方法)来获取文档。但是通过使用第一种方法,我需要获取存储桶中的文档数量,然后只有我可以遍历所有文档

查询: 1)如何从文档中获取选择性嵌套节点 2)在 json 文档中,我是否需要为每个节点 ant 拆分键值然后放入 JSONObject 以准备 JSONDocument?3)如何为bucket创建一个视图来进行快速检索?

4

1 回答 1

1

为什么不创建一个简单的 java pojo 并将其定义为 @Document。然后使用 CrudRepo 从 couchbase 保存和检索文档。

此示例可能对您有所帮助: https ://github.com/maverickmicky/spring-couchbase-cache

于 2016-07-01T16:25:33.270 回答