You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用ARRAY()函数的情况下,对CosmosDB中不同数组内的元素分别执行去重查询?

如何在不使用ARRAY()函数的情况下,对CosmosDB中不同数组内的元素分别执行去重查询?

我完全懂你的需求——你想要针对每个文档里的school数组单独做元素去重,而不是把所有文档的sourcen值混在一起全局去重,而且还不能用ARRAY()函数对吧?咱们可以用子查询结合DISTINCT的方式来实现,刚好能满足你的要求。

直接给你可用的查询语句:

SELECT 
    (SELECT DISTINCT s.sourcen FROM s IN c.source.pass.ploy.school) AS $1
FROM c

我给你拆解下这个查询的逻辑:

  • 外层的FROM c会遍历你集合里的每一个文档(就是你例子里的document1、document2)
  • 内层的子查询(SELECT DISTINCT s.sourcen FROM s IN c.source.pass.ploy.school)会专门针对当前文档c里的school数组,逐个取出sourcen值并做去重处理
  • 最后用AS $1把去重后的结果命名为你需要的$1字段,这样每个文档都会输出一个包含对应去重后sourcen数组的对象,和你期望的输出完全一致

用你提供的示例数据测试的话,这个查询会返回你想要的结果:

[
    {
        "$1": [
            "data",
            "data1"
        ]
    },
    {
        "$1": [
            "data1",
            "data2",
            "data3"
        ]
    }
]

顺便说下你之前查询的问题:你写的SELECT DISTINCT sourcen FROM [tablename.source.pass.ploy.school]是把所有文档的school数组展开后做全局去重,所以会得到所有唯一的sourcen值,而不是每个文档单独去重,这就和你的需求不匹配啦。

备注:内容来源于stack exchange,提问作者ann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:35:27