N1QL-在CouchBase中查询多层嵌套JSON数据

时间:2018-12-05 11:27:21

标签: json couchbase n1ql

如何通过查询多层嵌套值来选择整个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"
          }
      ]   
    }
  ]
}

我想查询它的“名称”属性。我已经尝试使用UNNEST函数,并且可以毫无问题地访问嵌套数据的第一层,即“ officialNames”。但是我不知道如何访问“名称”属性。按位置引用它,例如:

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

由于JSON中每个属性的位置可能会发生变化,因此无法正常工作。

1 个答案:

答案 0 :(得分:2)

“ JSON中每个属性的位置可以更改”是什么意思?您是否意味着“属性”和“ officialNames”以及“ streetsAndCities”数组可以具有其他条目,并且您想搜索所有条目?

如果是,请在此处查看ANY运算符: https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/collectionops.html