非常基本的N1QL分组数据操作

时间:2017-06-06 15:11:06

标签: couchbase n1ql nosql

所以我正在学习N1QL,以便编写一些查询以查看使用情况数据,我正在尝试查看如下所示的数据:

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

如果我选择这样:

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

我将数据按列名称分组,如下所示:

[
  {
    "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",
    }
   ]

但当然只返回第一个数据点记录。

1 个答案:

答案 0 :(得分:1)

SELECT ud AS datapoints FROM datatable d UNNEST d.datapoints AS ud;

UNNEST的工作方式与JOIN相同。 UNNEST在阵列上工作 数据表d UNNEST d.datapoints AS ud使d的笛卡尔连接和d.datapoints的每个元素。最后我们投射ud。

结帐UNNEST条款了解详情。

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