我有一些文档存储在documentdb中,遵循这个基本设计:
{
"id": "abc123",
"hiddenField": "XXXXXX",
"attributes": {
"x": "7",
"y": "8",
"z": "9"
}
}
在此示例中,属性下有三个属性,但实际上这不是常量。我想在没有隐藏字段的情况下检索它,并将任意数量的属性与id一起投影到文档的根目录中:
{
"id": "abc123",
"x": "7",
"y": "8",
"z": "9"
}
通过此查询,我可以将x,y和z输入根目录:
SELECT VALUE c.attributes FROM c
这会产生这个结果:
{
"x": "7",
"y": "8",
"z": "9"
}
...但此查询无效:
SELECT c.id, VALUE c.attributes FROM c
这是可以理解的,因为文档会说您可以列出属性或使用VALUE运算符。很公平。
有没有办法使用JOIN运算符或其他一些投影来结束所需的结果集?
答案 0 :(得分:2)
根据您的方案,我假设您可以参考以下查询:
SELECT
c.id,
c.attributes.x as x,
c.attributes.y as y,
c.attributes.z as z
from yourinput c
示例数据:
[{
"id": "abc123",
"hiddenField": "XXXXXX",
"attributes": {
"x": "7",
"y": "8",
"z": "9"
}
},{
"id": "abc456",
"hiddenField": "XXXXXX",
"attributes": {
"x": "1",
"y": "2",
"z": "3"
}
}]
<强>结果:强>
<强>更新强>
由于文档中attributes
属性的数量是任意的,我假设您可以利用user defined functions (UDFs)实现此目的,如下所示:
<强> udf.fun 强>
function main(attributes, id) {
attributes["id"]=id;
//add your other properties here
return attributes;
}
<强>查询:强>
SELECT
UDF.fun(attributes,id)
FROM
[YourInputAlias]