使用N1QL访问Couchbase中的内部元素

使用N1QL访问Couchbase中的内部元素,couchbase,n1ql,Couchbase,N1ql,首先,如果这个问题听起来太愚蠢,我很抱歉。但我最近正在学习N1QL,需要为我的语句提供一些输出。我的bucket名称是MultiSiteResponseTime,我试图通过执行“从MultiSiteResponseTime中选择HourResponsetime.Hour;”来获取所有小时的结果。但我没有得到任何结果。据我所知,如果你想访问内部元素,那么你必须像这样使用它HourResponsetime.Hour,但我不确定我错在哪里。另外,如果您可以帮助我获得特定密钥的结果,例如,我想知道1小时

首先,如果这个问题听起来太愚蠢,我很抱歉。但我最近正在学习N1QL,需要为我的语句提供一些输出。我的bucket名称是MultiSiteResponseTime,我试图通过执行“从MultiSiteResponseTime中选择HourResponsetime.Hour;”来获取所有小时的结果。但我没有得到任何结果。据我所知,如果你想访问内部元素,那么你必须像这样使用它HourResponsetime.Hour,但我不确定我错在哪里。另外,如果您可以帮助我获得特定密钥的结果,例如,我想知道1小时内ResponseTime的结果

{
  "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]