数组中的 Cosmos DB 查询字符串保留分组和 trim 值?
Cosmos DB query strings in array retain grouping and trim the value?
假设我的集合中有两组数据:
{
"id": "111",
"linkedId": [
"ABC:123",
"ABC:456"
]
}
{
"id": "222",
"linkedId": [
"DEF:321",
"DEF:654"
]
}
什么查询可以运行得到这样的结果?
{
[
"123",
"456"
]
},
{
[
"321",
"654"
]
}
我试过了
SELECT c.linkedId FROM c
但是结果集中的 "linkedId" 作为 属性 名称。我尝试了 LEFT 但它没有 trim 字符串的前 4 个字符。
然后我试了
SELECT value cc FROM cc In c.linkedId
但是这样就失去了分组。
有什么想法吗?
由于元素只是字符串,而不是 json 对象,我建议您在 cosmos db 查询 sql.
中使用 UDF
UDF:
function userDefinedFunction(arr){
var returnArr = [];
for(var i=0;i<arr.length;i++){
returnArr.push(arr[i].substring(4,7));
}
return returnArr;
}
SQL:
SELECT value udf.test(c.linkedId) FROM c
输出:
假设我的集合中有两组数据:
{
"id": "111",
"linkedId": [
"ABC:123",
"ABC:456"
]
}
{
"id": "222",
"linkedId": [
"DEF:321",
"DEF:654"
]
}
什么查询可以运行得到这样的结果?
{
[
"123",
"456"
]
},
{
[
"321",
"654"
]
}
我试过了
SELECT c.linkedId FROM c
但是结果集中的 "linkedId" 作为 属性 名称。我尝试了 LEFT 但它没有 trim 字符串的前 4 个字符。
然后我试了
SELECT value cc FROM cc In c.linkedId
但是这样就失去了分组。
有什么想法吗?
由于元素只是字符串,而不是 json 对象,我建议您在 cosmos db 查询 sql.
中使用 UDFUDF:
function userDefinedFunction(arr){
var returnArr = [];
for(var i=0;i<arr.length;i++){
returnArr.push(arr[i].substring(4,7));
}
return returnArr;
}
SQL:
SELECT value udf.test(c.linkedId) FROM c
输出: