2016-04-27 8 views
4

Zunächst tut mir leid, wenn diese Frage zu dumm klingt. Aber ich lerne gerade N1QL und brauche etwas für meine Aussage. Mein Bucket-Name ist MultiSiteResponseTime und ich versuche, das Ergebnis aller Stunden zu erhalten, indem ich "hourResponsetime.Hour von MultiSiteResponseTime;" ausführe. Aber ich bekomme kein Ergebnis. Von dem, was ich verstanden habe, wenn Sie auf die inneren Elemente zugreifen möchten, dann müssen Sie es so verwenden HourResponsetime.Hour, aber ich bin mir nicht sicher, wo ich falsch liege. Auch wenn Sie mich in immer Ergebnis eines bestimmten Schlüssels, zum Beispiel helfen könnte, würde Ich mag das Ergebnis der Response vorhanden für Stunde wissen 1.Zugriff auf innere Elemente in Couchbase mit N1QL

{ 
    "Para": "ResponseTime", 
    "Date": "18-04-2016", 
    "Qantas": { 
    "HourResponsetime": [ 
     { 
     "Hour": 0, 
     "ResponseTime": 8 
     }, 
     { 
     "Hour": 1, 
     "ResponseTime": 9 
     }, 
    ] 
    } 
} 

Antwort

7

Dies ist auf keinen eine dumme Frage bedeuten!

Die gepunktete Pfadsyntax "A.B" funktioniert gut, wenn A ein JSON-Objekt ist. Ihre Dokumentstruktur hat ein Array von Objekten in HoursResponseTime, deshalb funktioniert es nicht. Der Weg zu gehen ist, einen Array-Index-Selektor mit einem Stern zu verwenden: A[*].

Die Pfadsyntax beginnt auch mit der Wurzel des Inhalts des Dokuments. Hier haben Sie ein Zwischenobjekt Qantas, das Sie Teil des Pfades machen sollten.

Das gibt uns:

SELECT Qantas.HourResponsetime[*].Hour FROM MultiSiteResponseTime; 

Dieses für jedes Dokument eine Array von Hour s zurückkehren.

+0

Vielen Dank Simon, ich bekomme die gewünschten Ergebnisse. Also korrigiere mich, wenn ich falsch liege, ich muss Asterix erwähnen, wenn ich auf den Inhalt eines Arrays zugreifen muss. –

+0

Ja, wenn Sie den Wert eines Attributs für alle Elemente des Arrays erfassen möchten. Sie können auch ein bestimmtes Element z. [3] –

Verwandte Themen