Страсть в программировании на CouchBase - PullRequest
1 голос
/ 31 мая 2019

Я хотел бы получить единственный элемент в документе 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"}]

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Если вы проектируете countryDetails, он проецирует весь подобъект.Если вам нужна часть подобъекта, вам необходимо явно спроецировать это.

Следующая конструкция ARRAY предоставит ожидаемое представление данных.

SELECT ARRAY {v.name,v.code} FOR v IN t.countryDetails END AS contryDetails
FROM test AS t 
WHERE t.type = "countries";
0 голосов
/ 31 мая 2019

То, что вы пытаетесь сделать, кажется невозможным. Вы можете приблизиться к тому, что вы хотите, с помощью запроса, подобного этому:

select raw countryDetails from test

Но результаты этого запроса по-прежнему заключены в дополнительный уровень массива.

...