【问题标题】:Passion in CouchBase Programming对 CouchBase 编程的热情
【发布时间】:2019-05-31 16:56:15
【问题描述】:

我想获取对象数组中的 Couchbase 文档中的单个元素,但我能够获取对象数组

我尝试使用以下查询获取数组,'select countryDetails from test';

{
   "type":"countries",
   "docName":"CountryData",
   "countryDetails":[
      {
         "name":"US",
         "code":"+1",
         "stateInfo":[
            {
               "name":"Florida",
               "id":"1212"
            },
            {
               "name":"NewYork",
               "id":"1214"
            }
         ]
      },
       {
         "name":"France",
         "code":"+33",
         "stateInfo":[
            {
               "name":"Grand Est",
               "id":"5212"
            },
            {
               "name":"Brittany",
               "id":"5214"
            }
         ]
      }
   ]
}

我尝试使用 select countryDetails from test; 获取数组

我喜欢以[ {"name" : "US", "code" : "+1" }, {"name" : "France", "code" : "+33"}] 获取结果

【问题讨论】:

  • 为什么我被否决了,有什么需要纠正的

标签: couchbase n1ql spring-data-couchbase


【解决方案1】:

如果你投影 countryDetails 它会投影整个子对象。 如果你需要子对象的一部分,你需要明确地投影它。

以下 ARRAY 构造将提供您期望的数据表示。

SELECT ARRAY {v.name,v.code} FOR v IN t.countryDetails END AS contryDetails
FROM test AS t 
WHERE t.type = "countries";

【讨论】:

    【解决方案2】:

    您尝试做的事情似乎是不可能的。通过这样的查询,您可以更接近您想要的结果:

    select raw countryDetails from test
    

    但是这个查询的结果仍然有一个额外的数组级别的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2021-06-07
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      相关资源
      最近更新 更多