CosmosDb 嵌套数组查询投影
CosmosDb nested array query projection
我想从存储在 CosmosDb 中的文档内的嵌套数组中提取特定数据。这与报告用例相关,在该用例中,我目前过度获取了比报告所需更多的数据。
我正在使用此处 https://www.documentdb.com/sql/demo 上的 playground 中的示例文档来说明我正在尝试做的事情的示例。结构如下所示:
{
"id": "03226",
"description": "Babyfood, dessert, fruit pudding, orange, strained",
"version": 1,
"foodGroup": "Baby Foods",
"servings": [{
"amount": 1,
"description": "oz",
"weightInGrams": 28.35
}, {
"amount": 1,
"description": "jar",
"weightInGrams": 113
}
],
}
假设我想获取根 ID 属性 和服务对象的 'description' 属性 我想要的输出是这样的:
{
"id": "03226",
"servings": [{
"description": "oz"
}, {
"description": "jar"
}
]
}
这是我根据需要塑造结果的收尾。
SELECT
VALUE
{
"id": c.id,
"servings": [
{
"description": s.description
}
]
}
FROM c
JOIN s IN c.servings
但是,结果似乎只抢到了份量中的第一项。
{
"id": "03226",
"servings": [
{
"description": "oz"
}
]
}
我无法找到这种嵌套对象投影的任何示例,其中他们没有硬编码类似 servings[0] 的内容。我该如何解决这个问题?
您应该使用 ARRAY 表达式从子查询的结果构造一个数组来实现此目的。
请试试这个SQL:
SELECT
c.id,ARRAY(SELECT s.description FROM s IN c.servings) AS servings
FROM c
结果:
[
{
"id": "03226",
"servings": [
{
"description": "oz"
},
{
"description": "jar"
}
]
}
]
我想从存储在 CosmosDb 中的文档内的嵌套数组中提取特定数据。这与报告用例相关,在该用例中,我目前过度获取了比报告所需更多的数据。
我正在使用此处 https://www.documentdb.com/sql/demo 上的 playground 中的示例文档来说明我正在尝试做的事情的示例。结构如下所示:
{
"id": "03226",
"description": "Babyfood, dessert, fruit pudding, orange, strained",
"version": 1,
"foodGroup": "Baby Foods",
"servings": [{
"amount": 1,
"description": "oz",
"weightInGrams": 28.35
}, {
"amount": 1,
"description": "jar",
"weightInGrams": 113
}
],
}
假设我想获取根 ID 属性 和服务对象的 'description' 属性 我想要的输出是这样的:
{
"id": "03226",
"servings": [{
"description": "oz"
}, {
"description": "jar"
}
]
}
这是我根据需要塑造结果的收尾。
SELECT
VALUE
{
"id": c.id,
"servings": [
{
"description": s.description
}
]
}
FROM c
JOIN s IN c.servings
但是,结果似乎只抢到了份量中的第一项。
{
"id": "03226",
"servings": [
{
"description": "oz"
}
]
}
我无法找到这种嵌套对象投影的任何示例,其中他们没有硬编码类似 servings[0] 的内容。我该如何解决这个问题?
您应该使用 ARRAY 表达式从子查询的结果构造一个数组来实现此目的。
请试试这个SQL:
SELECT
c.id,ARRAY(SELECT s.description FROM s IN c.servings) AS servings
FROM c
结果:
[
{
"id": "03226",
"servings": [
{
"description": "oz"
},
{
"description": "jar"
}
]
}
]