我正在尝试尝试匹配/过滤unmatchedIds数组中的以下lineId值,然后通过processorTransactionId过滤exampleFile的结果集。结果将是删除最后一个FinancialTransactionEntity,其中processorTransactionId =“ 000000062121029333”。
理论上,unmatchedIds数组和exampleFile数组的大小都可以是无界的。
任何指导/建议/示例都将不胜感激。目前,我很难使用dataweave过滤器来实现此目的。
{
"unmatchedIds": [
{
"lineId": "000000062121029111"
},
{
"lineId": "000000062121029222"
}
]
}
exampleFile
[{
"financialTransactionEntity": {
"cardAcceptor": {
"name": "Burger Inc.",
"countryCode": "GBP"
},
"financialTransaction": {
"debitOrCredit": "C",
"amountInOriginalCurrency": {
"amount": "0000001000",
"exponent": "2"
},
"originalCurrencyCode": "826",
"transactionDate": "2020-02-18"
},
"processorTransactionId": "000000062121029111"
}
},
{
"financialTransactionEntity": {
"cardAcceptor": {
"name": "McDonalds Inc.",
"countryCode": "GBP"
},
"financialTransaction": {
"debitOrCredit": "C",
"amountInOriginalCurrency": {
"amount": "0000002000",
"exponent": "2"
},
"originalCurrencyCode": "826",
"transactionDate": "2020-02-18"
},
"processorTransactionId": "000000062121029222"
}
},
{
"financialTransactionEntity": {
"cardAcceptor": {
"name": "McDonalds Inc.",
"countryCode": "GBP"
},
"financialTransaction": {
"debitOrCredit": "C",
"amountInOriginalCurrency": {
"amount": "0000002000",
"exponent": "2"
},
"originalCurrencyCode": "826",
"transactionDate": "2020-02-18"
},
"processorTransactionId": "000000062121029333"
}
}
]
您可以使用groupBy
和filter
功能获得结果。首先,您可以按unMatchIds
分组lineId
,然后可以对实际有效负载应用过滤器以消除所有不匹配的项目。
output application/json
var unMatchIdsGrouped = var.unMatchIds.unmatchedIds groupBy $.lineId
---
payload filter ((item) -> unMatchIdsGrouped[ item.financialTransactionEntity.processorTransactionId] !=null)