Очень простая операция группировки данных N1QL

Итак, я изучаю N1QL, чтобы написать несколько запросов для просмотра данных об использовании, и я пытаюсь просмотреть данные, которые выглядят следующим образом:

   "data": {
      "datapoints": [
        {
          "point1": "data 1",
          "point2": "data 2",
          "point3": "data 3"
        },
        {
          "point1": "more data 1",
          "point2": "more data 2",
          "point3": "more data 3"
        }
     ]
    }

Если я выберу так:

ВЫБРАТЬ data.datapoints[].point1, data.datapoints[].point2 ИЗ таблицы данных

Я возвращаю данные, сгруппированные по имени столбца, например:

[
  {
    "point1": [
        "data 1",
        "more data 1"
    ]
  },
  {
    "point2": [
        "data 2",
        "more data 2"
    ]
  },
]

Можно ли настроить запрос так, чтобы он возвращал данные, сгруппированные по объектам, а не по точкам данных, но только с нужными мне полями? Я хотел бы смотреть по документам, а не по точкам данных в документах, просто с подмножеством точек данных в документах. Заранее спасибо!

РЕДАКТИРОВАТЬ: я замечаю, если я настроил свой запрос следующим образом:

SELECT data.datapoints[0].point1, data.datapoints[0].point2 FROM datatable

Мои данные отформатированы правильно, например:

  "datapoints": [
    {
      "point1": "data 1",
      "point2": "data 2",
    }
   ]

но, конечно, возвращается только первая запись точек данных.


person Ev Conrad    schedule 06.06.2017    source источник


Ответы (1)


ВЫБЕРИТЕ ud AS точки данных ИЗ таблицы данных d UNNEST d.datapoints AS ud;

UNNEST работает так же, как JOIN. UNNEST работает с массивами.
datatable d UNNEST d.datapoints AS ud выполняет декартово соединение d и каждого элемента d.datapoints. Наконец, мы проецируем ud.

Ознакомьтесь с пунктом UNNEST для получения подробной информации.

https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/from.html

person vsr    schedule 06.06.2017
comment
Я не уверен, почему, но это делает именно то, что я хочу. Спасибо! - person Ev Conrad; 06.06.2017