使用N1QL访问Couchbase中的内部元素
首先,如果这个问题听起来太愚蠢,我很抱歉。但我最近正在学习N1QL,需要为我的语句提供一些输出。我的bucket名称是MultiSiteResponseTime,我试图通过执行“从MultiSiteResponseTime中选择HourResponsetime.Hour;”来获取所有小时的结果。但我没有得到任何结果。据我所知,如果你想访问内部元素,那么你必须像这样使用它HourResponsetime.Hour,但我不确定我错在哪里。另外,如果您可以帮助我获得特定密钥的结果,例如,我想知道1小时内ResponseTime的结果使用N1QL访问Couchbase中的内部元素,couchbase,n1ql,Couchbase,N1ql,首先,如果这个问题听起来太愚蠢,我很抱歉。但我最近正在学习N1QL,需要为我的语句提供一些输出。我的bucket名称是MultiSiteResponseTime,我试图通过执行“从MultiSiteResponseTime中选择HourResponsetime.Hour;”来获取所有小时的结果。但我没有得到任何结果。据我所知,如果你想访问内部元素,那么你必须像这样使用它HourResponsetime.Hour,但我不确定我错在哪里。另外,如果您可以帮助我获得特定密钥的结果,例如,我想知道1小时
{
"Para": "ResponseTime",
"Date": "18-04-2016",
"Qantas": {
"HourResponsetime": [
{
"Hour": 0,
"ResponseTime": 8
},
{
"Hour": 1,
"ResponseTime": 9
},
]
}
}
这决不是一个愚蠢的问题 点路径语法“
A.B
”在A
是JSON对象时运行良好。您的文档结构在HoursResponseTime
中有一个对象数组,这就是它不起作用的原因。方法是使用带有星号的数组索引选择器:A[*]
此外,路径语法从文档内容的根开始。这里有一个中间对象Qantas
,您应该将其作为路径的一部分
这给了我们:
SELECT Qantas.HourResponsetime[*].Hour FROM MultiSiteResponseTime;
这将为每个文档返回一个小时数组
s
。非常感谢Simon,我得到了期望的结果。如果我错了,请纠正我的错误。每当我需要访问数组的内容时,我都需要提到[*]asterix。如果要为数组的所有元素收集一个属性的值,请回答“是”。您还可以获得一个特定元素,例如[3]