在Couchbase中使用CRUD操作

时间:2016-07-01 09:29:24

标签: java couchbase couchbase-view couchbase-java-api

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

    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这样的直接查询    字符串查询=“upsert into default(KEY,VALUE)values(LDATA)”

我无法找到如noram sql语句执行上述查询的方法    例:    Statement st = connection.createStatement();    ResultSet rs = st.executeQuery(query);

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

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

i)使用文档ID直接获取文档   bucket.get( “手机”)。内容()。得到( “phoneinfo”)

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

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

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

所以我认为最好使用第二种方法插入文档,因此我将能够使用N1QLResultSet(第二种方法)获取文档。但是通过使用第一种方法,我需要获取存储桶中的文档数量,然后只能循环遍历所有文档

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

1 个答案:

答案 0 :(得分:1)

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

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