2016-04-27 68 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] –