无法将分组数据连接到源数据。使用关系型sql很容易做到这一点,但是花了很多时间尝试使用cosmosdb sql api来实现这一点,却没有成功。如有任何建议,将不胜感激!
以下是源文档:
[
{
"stream":{
"id":"L1",
"version":1,
"versionName":"abc1"
}
},
{
"stream":{
"id":"L1",
"version":2,
"versionName":"abc2"
}
},
{
"stream":{
"id":"L2",
"version":1,
"versionName":"xyz1"
}
},
{
"stream":{
"id":"L2",
"version":2,
"versionName":"xyz2"
}
},
{
"stream":{
"id":"L2",
"version":3,
"versionName":"xyz3"
}
}
]
目标如下(按id分组):
[
{
"id":"L1",
"versions":[
{
"version":1,
"versionName":"abc1"
},
{
"version":2,
"versionName":"abc2"
}
]
},
{
"id":"L2",
"versions":[
{
"version":1,
"versionName":"xyz1"
},
{
"version":2,
"versionName":"xyz2"
},
{
"version":3,
"versionName":"xyz3"
}
]
}
]
我想知道这是可以做到的,还是只能在返回查询结果后在javascript中连接在一起?
1条答案
按热度按时间4dbbbstv1#
我想知道这是可以做到的,还是只能在返回查询结果后在javascript中连接在一起?
恐怕这在cosmos数据库中是不支持的。无sql数据库的sql与关系数据库的sql有很大的不同。将数据聚合到一个数组不是任何一种聚合方法,这意味着它不能与
group by
.加入也是不同的。它在cosmosdb中用于连接嵌套数组,而不是连接水平数据。
所以,我认为这可以用代码实现,用
order by id
,然后循环结果以完成目标。