在Couchbase中插入和获取Large JSON文档?

时间:2016-06-29 18:51:53

标签: json couchbase couchbase-java-api

我正在尝试在Couchbase中插入Large JSON文档。我已经插入了如下文档。

Bucket bucket = cluster.openBucket("default");
String jsondoc = "{{
"exams": {
    "exam1": {
        "year": {
            "math": {
                "questions": [
                    {
                        "question_text": "first question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    },
                    {
                         "question_text": "second question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    },
                    {
                        "question_text": "third question",
                        "options": [
                            "option1",
                            "option2",
                            "option3",
                            "option4",
                            "option5"
                        ],
                        "answer": 1,
                        "explaination": "explain the answer"
                    }
                ]
            },
            "english": {same structure as above}
        },
        "1961": {}
    },
    "exam2": {},
    "exam3": {},
    "exam4": {}
}
}}";

JSONObject jsonObj = new JSONObject();
jsonObj.put("examinfo", jsondoc);
bucket.upsert(JSONDocument.create("exam", jsonObj));

在插入如上所述的文档之后,我想在获取时检索单个嵌套节点(例如:问题)。

我有以下疑问: 1)我可以使用传统方法插入文档:   字符串查询=" upsert为默认值(KEY,VALUE)值(jsondoc)&#34 ;; statement.executeUpdateQuery(查询);  或者我是否需要在每个JSONObject中单独插入上面的嵌套节点以正确获取嵌套节点?

2)如何使用N1QLQueryResult将每个json文档作为一行获取,以获取所需的json信息

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的Couchbase?版本4.5中有一个子文档API,用于在JSON文档的某些部分上运行:

http://developer.couchbase.com/documentation/server/4.5-dp/sub-doc-api.html

关于第二个问题,您可能需要查看UNNEST N1QL运​​算符。