例如下面的JSON文件:
[
{
"id": "document1",
"source": {
"pass": {
"ploy": {
"school": [{
"sourcen": "data"
},
{
"sourcen": "data1"
},
{
"sourcen": "data1"
}
]
}
}
}
},
{
"id": "document2",
"source": {
"pass": {
"ploy": {
"school": [{
"sourcen": "data1"
},
{
"sourcen": "data2"
},
{
"sourcen": "data3"
},
{
"sourcen": "data3"
}
]
}
}
}
}
]
我想在“学校”向量中区分,所以输出将是:
[
{
"$1": [
"data",
"data1"
]
},
{
"$1": [
"data1",
"data2",
"data3"
]
}
]
在CosmosDB中,可以使用ARRAY()函数来检索此数据,但我使用的应用程序不支持它。
我现在正在运行下面的查询,但这是不正确的,因为它不同于所有值:SELECT DISTINCT sourcen FROM [tablename.source.pass.ploy.school]
是否有任何SQL查询从不同的向量输出不同的数据?
2条答案
按热度按时间pftdvrlh1#
您可以按照“sourcen”字段中的值对数据进行分组,然后使用
STRING_AGG()
连接每个组的不同值。pbpqsu0x2#
我不知道你的意思是“但我使用的应用程序不支持它。”查询进去,单据出来;您的应用程序不应该关心查询在CosmosDB服务器中是如何执行的,而应该接受任何有效的SQL查询。
难道是你的客户端应用程序只是无法绑定那些自动名称,如
$1
?基本上,你可以将
DISTINCT
子查询与ARRAY()
函数结合,并为构造的部分提供显式名称,如下所示:生成以下文档:
这里有一些关于如何在cosmosDB SQL查询中使用数组的文档,包括如何在Working with arrays and objects in Azure Cosmos DB中构造数组。