2016-04-27 70 views
4

首先,如果這個問題聽起來太愚蠢,我很抱歉。但我最近在學習N1QL,需要一些輸出以供我的陳述。我的存儲桶名稱是MultiSiteResponseTime,我試圖通過執行「從MultiSiteResponseTime;」中選擇HourResponsetime.Hour來獲得所有小時的結果。但我沒有得到任何結果。從我所瞭解的情況來看,如果你想訪問內部元素,那麼你必須使用它像HourResponsetime.Hour但我不知道我錯了。此外,如果你能幫助我在得到一個特定的鍵的結果,例如我想知道RESPONSETIME目前爲1小時使用N1QL訪問Couchbase中的內部元素

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

回答

7

結果這絕不意味着一個愚蠢的問題!

虛線路徑語法「A.B」適用於AJSON對象。您的文檔結構中有HoursResponseTime中的對象的數組,這就是爲什麼它不起作用。要走的路是使用帶有星號的數組索引選擇器:A[*]

另外,路徑語法從文檔內容的根部開始。在這裏你有一箇中間對象Qantas,你應該把它作爲路徑的一部分。

這給我們:

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

這應該返回陣列的Hour小號每個文檔。

+0

非常感謝西蒙,我正在得到理想的結果。所以糾正我,如果我錯了,我需要提及[*] asterix每當我需要訪問數組的內容。 –

+0

是的,如果你想爲數組的所有元素收集一個屬性的值。你也可以得到一個特定的元素,例如。 [3] –