比较mule 4中的两个值

比较mule 4中的两个值,mule,dataweave,mule4,Mule,Dataweave,Mule4,我尝试比较choice connector中的以下两个值,并尝试从值2和值1的值中捕捉缺少的值 价值1: [ { "FName": "salesforce.com" }, { "FName": "jobs" }, { "FName": "2020" }, { "FName": "06-2

我尝试比较choice connector中的以下两个值,并尝试从值2和值1的值中捕捉缺少的值

价值1:

[
  {
    "FName": "salesforce.com"
  },
  {
    "FName": "jobs"
  },
  {
    "FName": "2020"
  },
  {
     "FName": "06-2020"   
  }
]
价值2:

[
  {
    "name": "salesforce.com"
  },
  {
    "name": "jobs"
  }
]
Am使用选择条件vars.NameVar==vars.SplitName

我需要捕获值“FName”:“2020”和“FName”:“06-2020”,它们在值2中缺失

%dw 2.0
output application/json
import * from dw::core::Arrays
var a=[
  {
    "FName": "salesforce.com"
  },
  {
    "FName": "jobs"
  },
  {
    "FName": "2020"
  },
  {
    "FName": "06-2020"   
  }
]
var b=[
  {
    "name": "salesforce.com"
  },
  {
    "name": "jobs"
  }
]
---
leftJoin(a, b, (x) -> x.FName, (x) -> x.name) 
    filter !$.r? 
        map $.l 
输出:

[
  {
    "FName": "2020"
  },
  {
    "FName": "06-2020"
  }
]

试试这个脚本。这将只显示从value1到value2不匹配的项目

输入:

%dw 2.0
var value1=[
  {
    "FName": "salesforce.com"
  },
  {
    "FName": "jobs"
  },
  {
    "FName": "2020"
  },
  {
     "FName": "06-2020"   
  }
]
var value2=[
  {
    "name": "salesforce.com"
  },
  {
    "name": "jobs"
  }
]

output application/json
---
value1[?(!(value2.name contains $.FName))]
[
  {
    "FName": "2020"
  },
  {
    "FName": "06-2020"
  }
]
输出:

%dw 2.0
var value1=[
  {
    "FName": "salesforce.com"
  },
  {
    "FName": "jobs"
  },
  {
    "FName": "2020"
  },
  {
     "FName": "06-2020"   
  }
]
var value2=[
  {
    "name": "salesforce.com"
  },
  {
    "name": "jobs"
  }
]

output application/json
---
value1[?(!(value2.name contains $.FName))]
[
  {
    "FName": "2020"
  },
  {
    "FName": "06-2020"
  }
]

诀窍是使用包含!符号。如果您卸下它将反转逻辑,只显示匹配值。

这些变量(vars.NameVar、vars.SplitName)与此问题之间有什么关系?没有提到选择,也没有来自这些变量的数据用于您的问题。我认为它们与另一个问题有关,可以从这个问题中删除。感谢逻辑,我可以像这样调用import*从dw::core::Arrays vars.variableA vars.variablebaleb---leftJoin(variableA,variableA,(variableA)->variableA.FName,(variableB)->variablebea.name)filter!$。Rmap$.lYou可以在dataweave脚本中使用前面在mule流中定义的任何变量。像这样的引用
var.yourVariableName
脚本演示了该方法。正如@shortstackstevens所解释的,您可以使用来自变量或负载的输入。这个问题很难理解你的意思。我更改了示例,以避免在不需要的地方使用a和b。您只需要替换剩下的a和b的唯一实例。