我在尝试从Cosmos-db中的文档数组中选择时遇到问题。 (SQL-api)
我能够从数组中选择值,但是我也希望能够显示数组中每个值的位置。
示例JSON文档:
{
"Type": "SampleJSONMessage",
"Version": "1",
"Reference": "Test",
"DateTime": "2019-03-29T15:16:11.503Z",
"Configuration": {
"MessageType": "1",
"MessageConfig": "100",
"Source": [
{
"Source": "Stream1"
},
{
"Source": "Stream2"
},
{
"Source": "Stream3"
},
{
"Source": "Stream4"
}
]
}
}
我执行此操作
从c中选择c.Configuration.Source
返回以下内容:
[
{
"Source": "Stream1"
},
{
"Source": "Stream2"
},
{
"Source": "Stream3"
},
{
"Source": "Stream4"
}
]
这是我想显示的内容:
[
{
"Source": "Stream1" ,
"Position": "1"
},
{
"Source": "Stream2",
"Position": "2"
},
{
"Source": "Stream3",
"Position": "3"
},
{
"Source": "Stream4",
"Position": "4"
}
]
任何帮助表示赞赏!
答案 0 :(得分:0)
尽管specific index存储在CosmosDB中用于每个数组元素,但是SQL API当前没有直接访问它的方法。不过,用户定义的功能将起作用。
这是我添加到集合中的UDF:
function ADD_INDEX(array){
array.forEach(function(item, index){item.Position = index.toString()});
return array;
}
以及修改后的查询以使用它来获取所需的输出:
select udf.ADD_INDEX(c.Configuration.Source) AS Source from c