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

在Logic Apps中基于ID匹配合并数组元素的技术方案问询

在Azure Logic Apps中匹配数组ID并添加对应字段的解决方案

需求说明

基于**Machines数组的id与Vulnerabilities数组的machineId**的匹配关系,将对应机器的computerDnsName字段添加到漏洞条目里,而非单纯合并两个数组。

核心实现表达式

在Logic Apps的「Compose」动作中使用以下表达式(假设两个数组已存储在同名变量中):

@select(
    variables('Vulnerabilities'),
    union(
        item(),
        createObject(
            'computerDnsName',
            first(
                where(
                    variables('Machines'),
                    equals(item()?['machineId'], item()?['id'])
                )
            )?['computerDnsName']
        )
    )
)

表达式拆解

  • select(variables('Vulnerabilities'), ...):遍历Vulnerabilities数组的每一条漏洞记录
  • union(item(), ...):将原漏洞条目与新生成的computerDnsName字段合并,保留原所有字段
  • createObject('computerDnsName', ...):创建仅包含目标字段的临时对象
  • first(where(variables('Machines'), equals(item()?['machineId'], item()?['id'])))?['computerDnsName']:
    1. 在Machines数组中筛选出id与当前漏洞项machineId匹配的条目
    2. 取第一个匹配结果(若存在多匹配可调整逻辑)
    3. 通过?运算符处理无匹配的情况,避免空值报错

示例输出

匹配后的Vulnerabilities条目将包含新增的computerDnsName字段:

{
    "id": "5afa3afc92a7c63d4b70129e0a6f33f63a427e21-_-CVE-2020-6494-_-microsoft-_-edge_chromium-based-_-81.0.416.77-_-",
    "cveId": "CVE-2020-6494",
    "machineId": "5afa3afc92a7c63d4b70129e0a6f33f63a427e21",
    "fixingKbId": null,
    "productName": "edge_chromium-based",
    "productVendor": "microsoft",
    "productVersion": "81.0.416.77",
    "severity": "Low",
    "computerDnsName": "mymachine1.contoso.com"
}

注意事项

  • 确保Machines和Vulnerabilities数组已正确加载(可通过「Initialize variable」动作提前存储)
  • 若存在一个machineId对应多个Machines条目的场景,可替换first()为其他逻辑(如take()或自定义筛选)
  • ?空值运算符用于兼容无匹配项的情况,避免逻辑应用因空引用失败

内容的提问来源于stack exchange,提问作者LJsec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:28:17