2016-06-29 10 views
0

Ich versuche, das große JSON-Dokument in die Couchbase einzufügen. Ich habe das Dokument wie folgt eingefügt.Das große JSON-Dokument in Couchbase einfügen und holen?

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)); 

Nachdem das Dokument wie oben einlegen möchte ich einzelne verschachtelte Knoten abzurufen: Beim Abrufen (ex Fragen).

Ich habe die folgenden Abfragen: 1) Kann ich das Dokument mit traditionellen Ansatz einfügen: Zeichenfolge query = "upsert in Standardwerte (KEY, VALUE) (jsondoc)"; statement.executeUpdateQuery (Abfrage); oder Soll ich die obigen verschachtelten Knoten einzeln in jedes JSONObject einfügen, um die verschachtelten Knoten richtig zu holen?

2) Wie N1QLQueryResult verwenden, um das jeweils json Dokument als eine Zeile zu holen nur json Informationen

Antwort

0

Welche Version von Couchbase erforderlich zu holen verwenden Sie? Es ist ein Sub-doc API in der Version 4.5, die für den Betrieb auf Teile eines JSON-Dokuments ist:

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

Für Ihre zweite Frage, die Sie wollen in den UNNEST N1QL Betreiber suchen.

+0

Ich benutze Couchbase 4.0 –

+0

Hallo @beamatronic, ich füge das gesamte Dokument in nur einem Satz von jsonObject. So ist es möglich, den Teil von json Dokument zu bekommen? –

+0

Wie @beamatronic sagte: Ja, Sie können UPSERT oder INSERT verwenden. Sie müssen Ausdrücke für KEY und VALUE angeben. Siehe die Syntax in Dokumenten. Zum Abrufen gibt UNNEST Ihnen jede Frage als separate Zeile. Oder Sie können einen Array-Index angeben, um eine Frage anhand ihrer Position abzurufen. – geraldss