N1QL - запрашивать многоуровневые вложенные данные JSON в CouchBase - PullRequest
0 голосов
/ 05 декабря 2018

Как выбрать весь документ JSON, запрашивая многоуровневые вложенные значения?Вот пример моего JSON:

{
  "id": "6316194187233559482",
  "type": "Hotel",
  "attributes": [
    {
      "country": "Germany",
      "officialNames": [
          {
            "name": "The Ritz-Carlton, Berlin",
            "language": "GER"
          }
      ],
      "streetsAndCities": [
          {
              "city": "Berlin",
              "cityLanguage": "GER",
              "street": "Potsdamer Platz ",
              "streetLanguage": "GER"
          }
      ]   
    }
  ]
}

И я хочу запросить его для атрибута «name».Я экспериментировал с функцией UNNEST, и у меня нет проблем с доступом к первому уровню вложенных данных, т.е. «officialNames».Но я не знаю, как получить доступ к атрибуту «имя».Ссылка на него по позиции, например:

SELECT * FROM document 
UNNEST attributes as attributes
WHERE attributes[0].officialNames[0].name = "The Ritz-Carlton, Berlin"

Не будет работать, так как позиция каждого атрибута в JSON может измениться.

1 Ответ

0 голосов
/ 05 декабря 2018

Что вы подразумеваете под "позиция каждого атрибута в JSON может измениться"?Вы имеете в виду, что в массивах "attribute", "officialNames" и "roadsAndCities" могут быть дополнительные записи, и вы хотите выполнить поиск по всем записям?

Если да, то посмотрите на ЛЮБОЙ оператор здесь: https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/collectionops.html

...